基礎自學-關於STM32F103C8T6的定時器定時實現




讓自己別忘了大學里學的東西,那么就把它記錄下下來,效率會比忘記然后重新再去找資料再重頭學高的多 吐舌頭



先講講定時器的基礎定時功能:


1.先做一個形象的比喻:

手表 秒鍾     時鍾
定時器 定時器內部時鍾 定時器輸出時鍾

它們倆基本相同,不同的是,對於手表是秒鍾和分鍾之間的進制是固定為60,而對於定時器,定時器內部時鍾和輸出時鍾的進制關系是可以通過參數修改的

2.用到的寄存器:

1.arr寄存器
2.psc
寄存器
3.
模式寄存器 (向上,向下,先向上然后向下,先向下然后向上)


3.系統的輸入輸出:

1.輸入數據:定時器原始頻率
2.
輸出數據:定時器的更新


4.定時器的基礎原理:

1.有一個輸入定時器時鍾頻率-   (比如說用了systerminit(),然后定時器的輸入的原始頻率72Mhz,也就是說1s滴答72000000次)
2.
通過一個PSC分頻器,將定時器的時鍾頻率進行分頻-   (確定了定時器的最終頻率)

3.通過一個ARR裝載寄存器,將定時器的最高點確定-   (確定了定時器的頂端值)

4.定時器的代碼:

void Tim3_Base_Init(u32 Period, u32 Prescaler)
{
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;                        //結構體_定時器基礎-聲明     
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);                   //時鍾開啟_Tim3

	TIM_TimeBaseStructure.TIM_Period = Period;                            //結構體_定時器基礎-定時器頂端值設定

	TIM_TimeBaseStructure.TIM_Prescaler = Prescaler;                      //結構體_定時器基礎-定時器分頻值設定

	TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                        //結構體_定時器基礎-忽略

	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;           //結構體_定時器基礎-計數模式-向上計數

	TIM_TimeBaseInit(TIM3, & TIM_TimeBaseStructure);                      //結構體_定時器基礎-結束配置
	
	TIM_ARRPreloadConfig(TIM3, ENABLE);	                              //開關_使能定時器計數功能
	
	TIM_Cmd(TIM3, ENABLE);                                                //開關_定時器總開關
	
}
PS: STM32固件庫里面的結構體配置往往都只是涉及到模式的配置,而並沒有開關使能等內容,所以並不是說結構體配置完就可以用了,所以 特意把對應功能的使能命令放在函數的末尾,把涉及到的寄存器放在最上面,方便理解和記憶,一般涉及到哪些寄存器、外設和功能,那么找對應的使能開關,然后使能它們即可。









注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com