⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f103-s.h

📁 基于C语言的stm32系列芯片的应用开发实例
💻 H
📖 第 1 页 / 共 5 页
字号:

// *******************************************************************************************************
//				11 窗口看门狗(WWDG)
// *******************************************************************************************************

// *******************************************************************************************************
//				12 高级控制定时器(TIM1)
// *******************************************************************************************************

// *******************************************************************************************************
//				13 通用定时器(TIMx)  x=2 3 4
// *******************************************************************************************************

 struct TIM_CR1_BITS {
	Uint16  CEN       :1;	// 0	允许计数器    1:开启计数器
	Uint16  UDIS      :1;	// 1	禁止更新 软件通过该位允许/禁止UEV事件的产生
	Uint16  URS       :1;	// 2	更新请求源 软件通过该位选择UEV事件的源1:如果允许产生更新中断或DMA请求,则只有计数器溢出/下溢产生一个更新中断或DMA请求
	Uint16  OPM       :1;	// 3	单脉冲模式   0:在发生更新事件时,计数器不停止 1:在发生下一次更新事件(清除CEN位)时,计数器停止。
	Uint16  DIR       :1;	// 4	方向 0:计数器向上计数 1:计数器向下计数
	Uint16  CMS       :2;	// 6:5	选择中央对齐模式
	Uint16  ARPE      :1;	// 7	自动重装载预装载允许位	0:TIM1_ARR寄存器没有缓冲
	Uint16  CKD       :2;	// 9:8 	时钟分频因子 时钟(CK_INT)频率与数字滤波器(ETR,TIx)使用的采样频率之间的分频比例。
	Uint16  Reserved0 :6;	// 15:10
};

union TIM_CR1_REG {
   Uint16                all;
   struct TIM_CR1_BITS  bit;
};

//------------------------------------------------------------------------
//			控制寄存器2(TIMx_CR2)
//------------------------------------------------------------------------

 struct TIM_CR2_BITS {
	Uint16  Reserved1       :3;	// 2:0
	Uint16  CCDS            :1;	// 3	CCDS:捕获/比较的DMA选择 0:当发生CCx事件时,送出CCx的DMA请求。
	Uint16  MMS             :3;	// 6:4	MMS[1:0]:主模式选择 这两位用于选择在主模式下送到从定时器的同步信息(TRGO)
	Uint16  TI1S            :1;	// 7	TI1选择   0:TIMx_CH1管脚连到TI1输入。 1:TIMx_CH1、TIMx_CH2和TIMx_CH3管脚经异或后连到TI1输入。
	Uint16  Reserved0	:8;	// 15:7	
};

union TIM_CR2_REG {
   Uint16                all;
   struct TIM_CR2_BITS  bit;
};

//------------------------------------------------------------------------
//		13.5.3 从模式控制寄存器(TIMx_SMCR)
//------------------------------------------------------------------------
 struct TIM_SMCR_BITS {
	Uint16  SMS             :3;	// 2:0		SMS:从模式选择 000:关闭从模式 – 如果CEN=1,则预分频器直接由内部时钟驱动。
	Uint16  Reserved1       :1;	// 3
	Uint16  TS              :3;	// 6:4		S[2:0]:触发选择
	Uint16  MSM             :1;	// 7		MSM:主/从模式			
	Uint16  ETF             :4;	// 11:8		ETF[3:0]:外部触发滤波
	Uint16  ETPS            :2;	// 13:12	ETPS[1:0]:外部触发预分频	
	Uint16  CEC             :1;	// 14 		ECE:外部时钟允许位
	Uint16  ETP     	:1;	// 15		ETP:外部触发极性 0:ETR不反相,高电平或上升沿有效 1:ETR被反相,低电平或下降沿有效
								
};

union TIM_SMCR_REG {
   Uint16                 all;
   struct TIM_SMCR_BITS  bit;
};


//------------------------------------------------------------------------
//		13.5.4 DMA/中断使能寄存器(TIMx_DIER)
//------------------------------------------------------------------------

 struct TIM_DIER_BITS {
	Uint16  UIE             :1;	// 0		UIE:允许更新中断 1:允许更新中断
	Uint16  CC1IE           :1;	// 1		CC1IE:允许捕获/比较1中断
	Uint16  CC2IE           :1;	// 2		CC2IE:允许捕获/比较2中断
	Uint16  CC3IE           :1;	// 3		CC3IE:允许捕获/比较3中断
	Uint16  CC4IE           :1;	// 4		CC4IE:允许捕获/比较4中断
	Uint16  Reserved3       :1;	// 5
	Uint16  TIE             :1;	// 6		TIE:允许触发中断
	Uint16  Reserved2       :1;	// 7
	Uint16  UDE             :1;	// 8		UDE:允许更新的DMA请求						
	Uint16  CC1DE           :1;	// 9
	Uint16  CC2DE           :1;	// 10
	Uint16  CC3DE           :1;	// 11		
	Uint16  CC4DE           :1;	// 12		CC4DE:允许捕获/比较4的DMA请求
	Uint16  Reserved1       :1;	// 13
	Uint16  TDE             :1;	// 14 		TDE:允许触发DMA请求
	Uint16  Reserved0    	:1;	// 15			
};

union TIM_DIER_REG {
   Uint16                 all;
   struct TIM_DIER_BITS  bit;
};

//------------------------------------------------------------------------
//			13.5.5 状态寄存器(TIMx_SR)
//------------------------------------------------------------------------

 struct TIM_SR_BITS {
	Uint16  UIF             :1;	// 0		UIF:更新中断标记 当产生更新事件()时该位由硬件置1。它由软件清0。;例如:上溢或下溢时,软件对CNT重新初始化
	Uint16  CC1IF           :1;	// 1		CC1IF:捕获/比较1 中断标记由软件清0 【写0可清除该位】
	Uint16  CC2IF           :1;	// 2		CC2IF:捕获/比较2 中断标记由软件清0 【写0可清除该位】
	Uint16  CC3IF           :1;	// 3		CC3IF:捕获/比较3 中断标记由软件清0 【写0可清除该位】
	Uint16  CC4IF           :1;	// 4		CC4IF:捕获/比较4 中断标记由软件清0 【写0可清除该位】
	
	Uint16  Reserved2       :1;	// 5
	Uint16  TIF             :1;	// 6		TIF:触发器中断标记
	Uint16  Reserved1       :2;	// 8:7
	Uint16  CC1OF           :1;	// 9		CC1OF:捕获/比较1 过捕获标记	【写0可清除该位】
	Uint16  CC2OF           :1;	// 10		CC2OF:捕获/比较2 过捕获标记	
	Uint16  CC3OF           :1;	// 11		CC3OF:捕获/比较3 过捕获标记	
	Uint16  CC4OF           :1;	// 12 		CC4OF:捕获/比较4 过捕获标记	
	Uint16  Reserved0    	:3;	// 15:13
	
};

union TIM_SR_REG {
   Uint16              all;
   struct TIM_SR_BITS  bit;
};

//------------------------------------------------------------------------
//			13.5.6 事件产生寄存器(TIMx_EGR)
//------------------------------------------------------------------------

 struct TIM_EGR_BITS {
	Uint16  UG              :1;	// 0		UG:  产生更新事件 该位由软件置1,由硬件自动清0。1:重初始化计数器,并产生一个更新事件。注意预分频器的计数器也被清0		
	Uint16  CC1G            :1;	// 1		CC1G:产生捕获/比较1事件 该位由软件置1,用于产生一个捕获/比较事件,由硬件自动清0。
	Uint16  CC2G            :1;	// 2		CC2G:产生捕获/比较2事件
	Uint16  CC3G            :1;	// 3		CC3G:产生捕获/比较3事件
	Uint16  CC4G            :1;	// 4		CC4G:产生捕获/比较4事件
	Uint16  Reserved1       :1;	// 5
	Uint16  TG              :1;	// 6		TG:产生触发事件该位由软件置1,用于产生一个触发事件,由硬件自动清0。
	Uint16  Reserved0    	:9;	// 15:7						
};

union TIM_EGR_REG {
   Uint16               all;
   struct TIM_EGR_BITS  bit;
};


//------------------------------------------------------------------------
//			13.5.7 捕获/比较模式寄存器1(TIMx_CCMR1)
//------------------------------------------------------------------------


 struct TIM_CCMR1_OU_BITS {
	Uint16  CC1S            :2;	// 1:0		CC1S[1:0]:捕获/比较1 选择。00:CC1通道被配置为输出;01:CC1通道被配置为输入,IC1映射在TI1上 10:CC1通道被配置为输入,IC1映射在TI2上;11:CC1通道被配置为输入,IC1映射在TRC上
	Uint16  OC1FE           :1;	// 2		OC1FE:输出比较1 快速使能OCFE的只在通道被配置成PWM1或PWM2模式时起作用。
	Uint16  OC1PE           :1;	// 3		OC1PE:输出比较1预装载使能1:开启TIMx_CCR1寄存器的预装载功能
	Uint16  OC1M            :3;	// 6:4		0C1M[2:0]:输出比较1模式 000:冻结001 : 匹配时设置通道1 为有效电平
	Uint16  COC1CE          :1;	// 7		OC1CE:输出比较1清0使能
	
	Uint16  CC2S            :2;	// 9:8		CC2S[1:0]:捕获/比较2选择。这2位定义通道的方向(输入/输出),及输入脚的选择:
	Uint16  CC2FE           :1;	// 10		OC2FE:输出比较2快速使能OCFE的只在通道被配置成PWM1或PWM2模式时起作用。
	Uint16  OC2PE           :1;	// 11		OC2PE:输出比较2预装载使能
	Uint16  OC2M            :3;	// 14:12
	Uint16  OC2CE    	:1;	// 15		OC2CE:输出比较2清0使能											
};

 struct TIM_CCMR1_IN_BITS {
	Uint16  CC1S            :2;	// 1:0		CC1S[1:0]:捕获/比较1选择。
	Uint16  IC1PSC          :2;	// 3:2		IC1PSC[1:0]:输入/捕获1预分频器00:无预分频器,捕获输入口上检测到的每一个边沿都触发一次捕获;
	Uint16  IC1F            :4;	// 7:4		IC1F[3:0]:输入捕获1滤波器0000:无滤波器,以fDTS采样0001:采样频率fSAMPLING=fCK_INT,N=2
	Uint16  CC2S            :2;	// 9:8		CC2S[1:0]:捕获/比较2选择。00:CC2通道被配置为输出;01:CC2通道被配置为输入,IC2映射在TI2上;
	Uint16  IC2PSC          :2;	// 11:10	IC2PSC[1:0]:输入/捕获2预分频器
	Uint16  IC2F    	:4;	// 15:12	IC2F:输入捕获2滤波器
								
};

union TIM_CCMR1_REG {
   Uint16            	     all;
   struct TIM_CCMR1_OU_BITS  ou_bit;
   struct TIM_CCMR1_IN_BITS  in_bit;

};

//------------------------------------------------------------------------
//			13.5.8 捕获/比较模式寄存器2(TIMx_CCMR2)
//------------------------------------------------------------------------


 struct TIM_CCMR2_OU_BITS {
	Uint16  CC3S            :2;	// 1:0		CC3S[1:0]:捕获/比较3选择
	Uint16  OC3FE           :1;	// 2		OC3FE:输出比较3快速使能
	Uint16  OC3PE           :1;	// 3		OC3PE:输出比较3预装载使能
	Uint16  OC3M            :3;	// 6:4		0C3M[2:0]:输出比较3模式
	Uint16  OC3CE           :1;	// 7		OC3CE:输出比较3清0使能
	
	Uint16  CC4S            :2;	// 9:8		CC4S[1:0]:捕获/比较4选择。00:CC4通道被配置为输出;				
	Uint16  OC4FE           :1;	// 10		OC4FE:输出比较4快速使能
	Uint16  OC4PE           :1;	// 11		OC4PE:输出比较4预装载使能
	Uint16  OC4M            :3;	// 14:12	0C4M[2:0]:输出比较4模式
	Uint16  OC4CE    	:1;	// 15		OC4CE:输出比较4清0使能
};


 struct TIM_CCMR2_IN_BITS {
	Uint16  CC3S            :2;	// 1:0		CC3S[1:0]:捕获/比较3选择。
	Uint16  IC3PSC          :2;	// 3:2		IC3PSC[1:0]:输入/捕获3预分频器
	Uint16  IC3F            :4;	// 7:4		IC3F[3:0]:输入捕获3滤波器
	Uint16  CC4S            :2;	// 9:8		CC2S[1:0]:捕获/比较4选择
	Uint16  IC4PSC          :2;	// 11:10	IC4PSC[1:0]:输入/捕获4预分频器
	Uint16  IC4F    	:4;	// 15:12	IC4F:输入捕获4滤波器								
};

union TIM_CCMR2_REG {
   Uint16               all;
   struct TIM_CCMR2_OU_BITS  ou_bit;
   struct TIM_CCMR2_IN_BITS  in_bit;

};

//------------------------------------------------------------------------
//			13.5.9 捕获/比较使能寄存器(TIMx_CCER)
//------------------------------------------------------------------------


 struct TIM_CCER_BITS {
	Uint16  CC1E            :1;	// 0		CC1E:输入/捕获1输出使能  0: 关闭- OC1禁止输出。1: 开启- OC1信号输出到对应的输出引脚。
	Uint16  CC1P            :1;	// 1		CCIP  输入/捕获1输出极性  0:OC1高电平有效1:OC1低电平有效
	Uint16  Reserved3       :2;	// 3:2
	Uint16  CC2E            :1;	// 4		CC2E:输入/捕获2输出使能。参考CC1E的描述
	Uint16  CC2P            :1;	// 5		CC2P:输入/捕获2输出极性。参考CC1P的描述。
	Uint16  Reserved2       :2;	// 7:6
	Uint16  CC3E            :1;	// 8		CC3E:输入/捕获3输出使能。参考CC1E 的描述
	Uint16  CC3P            :1;	// 9		CC3P:输入/捕获3输出极性。参考CC1P的描述。
	Uint16  Reserved1       :2;	// 11:10		
	Uint16  CC4E            :1;	// 12		CC4E:输入/捕获4输出使能。参考CC1E 的描述。
	Uint16  CC4P            :1;	// 13		CC4P:输入/捕获4输出极性。参考CC1P的描述。
	Uint16  Reserved0    	:2;	// 15:14														
};

union TIM_CCER_REG {
   Uint16                all;
   struct TIM_CCER_BITS  bit;
};

//------------------------------------------------------------------------
//			13.5.10 计数器(TIMx_CNT)
//------------------------------------------------------------------------

 struct TIM_CNT_BITS {
		
	Uint16  CNT            :16;	// 15:0		计数器的值
				
};

union TIM_CNT_REG {
   Uint16                all;
   struct TIM_CNT_BITS   bit;
};

//------------------------------------------------------------------------
//			13.5.11 预分频器(TIMx_PSC)
//------------------------------------------------------------------------
 struct TIM_PSC_BITS {
		
	Uint16  PSC            :16;	// 15:0		预分频器的值				
};

union TIM_PSC_REG {
   Uint16                all;
   struct TIM_PSC_BITS   bit;
};

//------------------------------------------------------------------------
//			13.5.12 自动重装载寄存器(TIMx_ARR)
//------------------------------------------------------------------------
 struct TIM_ARR_BITS {
		
	Uint16  ARR            :16;	// 15:0		自动重装载的值				
};

union TIM_ARR_REG {
   Uint16                all;
   struct TIM_ARR_BITS   bit;
};



//------------------------------------------------------------------------
//		13.5.13 捕获/比较寄存器1-4(TIM1_CCR1-4)
//------------------------------------------------------------------------


 struct TIM_CCR_BITS {
			
	Uint16  CCR		:16;	// 15:0		捕获/比较1-4的值
};

union TIM_CCR_REG {
   Uint16                 all;
   struct TIM_CCR_BITS   bit;
};


//------------------------------------------------------------------------
//			13.5.17 DMA控制寄存器(TIMx_DCR)
//------------------------------------------------------------------------

 struct TIM_DCR_BITS {
	Uint16  DBA		:5;	// 4:0	 DMA连续传送长度,这些位定义了DMA在连续模式下的传送长度0=1字节..
	Uint16  Reserved1	:3;	// 7:5
	Uint16  DBL		:5;	// 12:8	 DMA基地址,这些位定义了DMA在连续模式下的基地址
	Uint16  Reserved0	:3;	// 15:13
};

union TIM_DCR_REG {
   Uint16                 all;
   struct TIM_DCR_BITS   bit;
};

//------------------------------------------------------------------------
//			13.5.18 连续模式的DMA地址(TIMx_DMAR)
//------------------------------------------------------------------------

 struct TIM_DMAR_BITS {
			
	Uint16  DMAB		:16;	// 15:0		DMA连续传送寄存器
};

union TIM_DMAR_REG {
   Uint16                  all;
   struct TIM_DMAR_BITS   bit;
};


struct TIM_REGS {

   union  TIM_CR1_REG		cr1 ;      //
   u16    Reserved0		    ;
   union  TIM_CR2_REG		cr2;       //
   u16    Reserved1		    ;
   union  TIM_SMCR_REG         smcr;      //
   u16    Reserved2		    ;
   union  TIM_DIER_REG         dier;      //
   u16    Reserved3		    ;
   union  TIM_SR_REG         	sr  ;      //
   u16    Reserved4		    ;
   union  TIM_EGR_REG          egr;       //
   u16    Reserved5		    ;
   union  TIM_CCMR1_REG        ccmr1;     //
   u16    Reserved6		    ;
   union  TIM_CCMR2_REG        ccmr2;     //
   u16    Reserved7		    ;
   union  TIM_CCER_REG         ccer;      //
   u16    Reserved8		    ;
   union  TIM_CNT_REG          cnt ;      //
   u16    Reserved9		    ;
   union  TIM_PSC_REG          psc ;      //
   u16    Reserved10		    ;
   union  TIM_ARR_REG          arr ;      //
   u16    Reserved11[3]		    ;
   union  TIM_CCR_REG          ccr1;      //
   u16    Reserved12		    ;
   union  TIM_CCR_REG          ccr2;      //
   u16    Reserved13		    ;
   union  TIM_CCR_REG          ccr3;      //
   u16    Reserved14		    ;
   union  TIM_CCR_REG          ccr4;      //
   u16    Reserved15[3]		    ;
   union  TIM_DCR_REG          dcr ;      //
   u16    Reserved16		    ;
   union  TIM_DMAR_REG         dmar;      //
   u16    Reserved17		    ;
};



// *******************************************************************************************************
//				14 控制器局域网(bxCAN)
// *******************************************************************************************************
// *******************************************************************************************************
//				15 I2C接口
// *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -