Define tim module's registers

This commit is contained in:
Steins7 2024-08-04 23:18:38 +02:00
parent 6d95bce6df
commit 93f1b5a992

455
drv/tim_regs.h Normal file
View File

@ -0,0 +1,455 @@
/** @file tim_regs.h
* Module defining the TIMers registers.
*
* Mainly made to be used by the tim module. It is recommanded to go through
* the functions provided by that module instead of directly using the registers
* defined here.
*/
#ifndef _TIM_REGS_H_
#define _TIM_REGS_H_
//--includes--------------------------------------------------------------------
#include "stdint.h"
//--type definitions------------------------------------------------------------
#define TIM1_BASE_ADDRESS 0x40012C00
#define TIM2_BASE_ADDRESS 0x40000000
#define TIM3_BASE_ADDRESS 0x40000400
#define TIM4_BASE_ADDRESS 0x40000800
union TIM_CR1 {
struct {
uint32_t CEN:1;
uint32_t UDIS:1;
uint32_t URS:1;
uint32_t OPM:1;
uint32_t DIR:1;
uint32_t CMS:2;
uint32_t ARPE:1;
uint32_t CKD:2;
uint32_t reserved1:22;
};
uint32_t word;
};
union TIM_CR2 {
struct {
uint32_t reserved1:3;
uint32_t CCDS:1;
uint32_t MMS:3;
uint32_t TI1S:1;
uint32_t reserved2:24;
};
uint32_t word;
};
union TIM_ADV_CR2 {
struct {
uint32_t CCPC:1;
uint32_t reserved1:1;
uint32_t CCUS:1;
uint32_t CCDS:1;
uint32_t MMS:3;
uint32_t TI1S:1;
uint32_t OI1S:1;
uint32_t OIS1N:1;
uint32_t OIS2:1;
uint32_t OIS2N:1;
uint32_t OIS3:1;
uint32_t OIS3N:1;
uint32_t OIS4:1;
uint32_t reserved2:17;
};
uint32_t word;
};
union TIM_SMCR {
struct {
uint32_t SMS:3;
uint32_t reserved1:1;
uint32_t TS:3;
uint32_t MSM:1;
uint32_t ETF:4;
uint32_t ETPS:2;
uint32_t ECE:1;
uint32_t ETP:1;
uint32_t reserved2:16;
};
uint32_t word;
};
union TIM_DIER {
struct {
uint32_t UIE:1;
uint32_t CC1IE:1;
uint32_t CC2IE:1;
uint32_t CC3IE:1;
uint32_t CC4IE:1;
uint32_t reserved1:1;
uint32_t TIE:1;
uint32_t reserved2:1;
uint32_t UDE:1;
uint32_t CC1DE:1;
uint32_t CC2DE:1;
uint32_t CC3DE:1;
uint32_t CC4DE:1;
uint32_t COMDE:1;
uint32_t TDE:1;
uint32_t reserved3:17;
};
uint32_t word;
};
union TIM_ADV_DIER {
struct {
uint32_t UIE:1;
uint32_t CC1IE:1;
uint32_t CC2IE:1;
uint32_t CC3IE:1;
uint32_t CC4IE:1;
uint32_t COMIE:1;
uint32_t TIE:1;
uint32_t BIE:1;
uint32_t UDE:1;
uint32_t CC1DE:1;
uint32_t CC2DE:1;
uint32_t CC3DE:1;
uint32_t CC4DE:1;
uint32_t COMDE:1;
uint32_t TDE:1;
uint32_t reserved1:17;
};
uint32_t word;
};
union TIM_SR {
struct {
uint32_t UIF:1;
uint32_t CC1IF:1;
uint32_t CC2IF:1;
uint32_t CC3IF:1;
uint32_t CC4IF:1;
uint32_t reserved1:1;
uint32_t TIF:1;
uint32_t reserved2:2;
uint32_t CC1OF:1;
uint32_t CC2OF:1;
uint32_t CC3OF:1;
uint32_t CC4OF:1;
uint32_t reserved3:19;
};
uint32_t word;
};
union TIM_ADV_SR {
struct {
uint32_t UIF:1;
uint32_t CC1IF:1;
uint32_t CC2IF:1;
uint32_t CC3IF:1;
uint32_t CC4IF:1;
uint32_t COMIF:1;
uint32_t TIF:1;
uint32_t BIF:1;
uint32_t reserved1:1;
uint32_t CC1OF:1;
uint32_t CC2OF:1;
uint32_t CC3OF:1;
uint32_t CC4OF:1;
uint32_t reserved2:19;
};
uint32_t word;
};
union TIM_EGR {
struct {
uint32_t UG:1;
uint32_t CC1G:1;
uint32_t CC2G:1;
uint32_t CC3G:1;
uint32_t CC4G:1;
uint32_t reserved1:1;
uint32_t TG:1;
uint32_t reserved2:25;
};
uint32_t word;
};
union TIM_ADV_EGR {
struct {
uint32_t UG:1;
uint32_t CC1G:1;
uint32_t CC2G:1;
uint32_t CC3G:1;
uint32_t CC4G:1;
uint32_t COMG:1;
uint32_t TG:1;
uint32_t BG:1;
uint32_t reserved1:24;
};
uint32_t word;
};
union TIM_CCMR1_INPUT {
struct {
uint32_t CC1S:2;
uint32_t OC1FE:1;
uint32_t OC1PE:1;
uint32_t OC1M:3;
uint32_t OC1CE:1;
uint32_t CC2S:2;
uint32_t OC2FE:1;
uint32_t OC2PE:1;
uint32_t OC2M:3;
uint32_t OC2CE:1;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_CCMR1_OUTPUT {
struct {
uint32_t CC1S:2;
uint32_t IC1PSC:2;
uint32_t IC1F:4;
uint32_t CC2S:2;
uint32_t IC2PSC:2;
uint32_t IC2F:4;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_CCMR1 {
union TIM_CCMR1_INPUT input;
union TIM_CCMR1_OUTPUT output;
};
union TIM_CCMR2_INPUT {
struct {
uint32_t CC3S:2;
uint32_t OC3FE:1;
uint32_t OC3PE:1;
uint32_t OC3M:3;
uint32_t OC3CE:1;
uint32_t CC4S:2;
uint32_t OC4FE:1;
uint32_t OC4PE:1;
uint32_t OC4M:3;
uint32_t OC4CE:1;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_CCMR2_OUTPUT {
struct {
uint32_t CC3S:2;
uint32_t IC3PSC:2;
uint32_t IC3F:4;
uint32_t CC4S:2;
uint32_t IC4PSC:2;
uint32_t IC4F:4;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_CCMR2 {
union TIM_CCMR2_INPUT input;
union TIM_CCMR2_OUTPUT output;
};
union TIM_CCER {
struct {
uint32_t CC1E:1;
uint32_t CC1P:1;
uint32_t reserved1:2;
uint32_t CC2E:1;
uint32_t CC2P:1;
uint32_t reserved2:2;
uint32_t CC3E:1;
uint32_t CC3P:1;
uint32_t reserved3:2;
uint32_t CC4E:1;
uint32_t CC4P:1;
uint32_t reserved4:18;
};
uint32_t word;
};
union TIM_ADV_CCER {
struct {
uint32_t CC1E:1;
uint32_t CC1P:1;
uint32_t CC1NE:1;
uint32_t CC1NP:1;
uint32_t CC2E:1;
uint32_t CC2P:1;
uint32_t CC2NE:1;
uint32_t CC2NP:1;
uint32_t CC3E:1;
uint32_t CC3P:1;
uint32_t CC3NE:1;
uint32_t CC3NP:1;
uint32_t CC4E:1;
uint32_t CC4P:1;
uint32_t CC4NE:1;
uint32_t CC4NP:1;
uint32_t reserved1:18;
};
uint32_t word;
};
union TIM_CNT {
struct {
uint32_t CNT:16;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_PSC {
struct {
uint32_t PSC:16;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_ARR {
struct {
uint32_t ARR:16;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_ADV_RCR {
struct {
uint32_t REP:8;
uint32_t reserved1:24;
};
uint32_t word;
};
union TIM_CCR1 {
struct {
uint32_t CCR1:16;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_CCR2 {
struct {
uint32_t CCR2:16;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_CCR3 {
struct {
uint32_t CCR3:16;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_CCR4 {
struct {
uint32_t CCR4:16;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_ADV_BDTR {
struct {
uint32_t DT:8;
uint32_t LOCK:2;
uint32_t OSSI:1;
uint32_t OSSR:1;
uint32_t BKE:1;
uint32_t BKP:1;
uint32_t AOE:1;
uint32_t MOE:1;
uint32_t reserved1:16;
};
uint32_t word;
};
union TIM_DCR {
struct {
uint32_t DBA:5;
uint32_t reserved1:3;
uint32_t MBL:5;
uint32_t reserved2:19;
};
uint32_t word;
};
union TIM_DMAR {
struct {
uint32_t DMAB;
};
uint32_t word;
};
struct TIM {
union TIM_CR1 cr1;
union TIM_CR2 cr2;
union TIM_SMCR smcr;
union TIM_DIER dier;
union TIM_SR sr;
union TIM_EGR egr;
union TIM_CCMR1 ccmr1;
union TIM_CCMR2 ccmr2;
union TIM_CCER ccer;
union TIM_CNT cnt;
union TIM_PSC psc;
union TIM_ARR arr;
uint32_t reserved1;
union TIM_CCR1 ccr1;
union TIM_CCR2 ccr2;
union TIM_CCR3 ccr3;
union TIM_CCR4 ccr4;
uint32_t reserved2;
union TIM_DCR dcr;
union TIM_DMAR dmar;
};
struct TIM_ADV {
union TIM_CR1 cr1;
union TIM_ADV_CR2 cr2;
union TIM_SMCR smcr;
union TIM_ADV_DIER dier;
union TIM_ADV_SR sr;
union TIM_ADV_EGR egr;
union TIM_CCMR1 ccmr1;
union TIM_CCMR2 ccmr2;
union TIM_ADV_CCER ccer;
union TIM_CNT cnt;
union TIM_PSC psc;
union TIM_ARR arr;
union TIM_ADV_RCR rcr;
union TIM_CCR1 ccr1;
union TIM_CCR2 ccr2;
union TIM_CCR3 ccr3;
union TIM_CCR4 ccr4;
union TIM_ADV_BDTR bdtr;
union TIM_DCR dcr;
union TIM_DMAR dmar;
};
//--functions-------------------------------------------------------------------
#endif //_TIM_REGS_H_