ARM學(xué)習(xí)《八》——STM32定時(shí)器配置及其中斷設(shè)置!
首先定義定時(shí)器頭文件,也就是定義寄存器以供操作:
本文引用地址:http://cafeforensic.com/article/201611/318954.htm//*************************************************************************
//
// TIM2-Register
//
//*************************************************************************
然后配置定時(shí)器TIM2:
void TIM2_Configuration(void)
{
}
注:RCC_APB1ENR,SETENA0前面的文章已經(jīng)定義過(guò)
中斷函數(shù)處理:
void TIM2_IRQHandler(void)
{
if(TIM1_SR&0x01)
解釋:1S中斷來(lái)一次,向串口發(fā)送一字節(jié)數(shù)據(jù)0xAA;
接下來(lái)就在main()函數(shù)中添加配置定時(shí)器就可以了:
int main()
GPIO_PORTB_ODR&=~(1<<5);
}
當(dāng)然以上TIM2的配置必須在系統(tǒng)(時(shí)鐘)初始化以后,因?yàn)檫@些外設(shè)的工作要有時(shí)鐘來(lái)源的,知道了時(shí)鐘來(lái)源,和頻率才能計(jì)算出定時(shí)的時(shí)間等參數(shù),本程序是基于所有時(shí)鐘都設(shè)置成20M來(lái)執(zhí)行的。前面的幾個(gè)初始化函數(shù)以及寄存器設(shè)置都是調(diào)用的前面文章中設(shè)置好的。
好了,查看串口(9600),調(diào)試成功,1S發(fā)送1個(gè)0xAA,這樣看起來(lái)是很簡(jiǎn)單,但調(diào)試的過(guò)程是艱難的,要一次次的實(shí)驗(yàn),一個(gè)寄存器一個(gè)寄存器的進(jìn)行配置,學(xué)習(xí)本來(lái)就是一個(gè)緩慢而且艱辛的過(guò)程,但是當(dāng)你看到LED在閃爍,串口上收到數(shù)據(jù)時(shí),說(shuō)有的付出都是值得的,天道酬勤,一切困難都是紙老虎!
評(píng)論