STM32開(kāi)發(fā)板的TIM3開(kāi)啟和關(guān)閉
掃描二維碼
隨時(shí)隨地手機(jī)看文章
關(guān)閉定時(shí)器中斷要考慮好多情況
1)關(guān)閉定時(shí)器時(shí),定時(shí)器是否在處在工作狀態(tài)
2)關(guān)閉定時(shí)器時(shí),定時(shí)器是否正好進(jìn)入中斷,造成關(guān)閉程序出現(xiàn)斷層,進(jìn)而無(wú)法實(shí)現(xiàn)完整關(guān)閉程序,此時(shí)可以使用高一級(jí)別的外部中斷強(qiáng)制進(jìn)入外部中斷服務(wù)函數(shù)進(jìn)行關(guān)閉程序
3)關(guān)閉定時(shí)器時(shí),關(guān)閉定時(shí)器的程序是否在定時(shí)器服務(wù)函數(shù)里面?還是在總函數(shù)里面?還是在外部中斷服務(wù)函數(shù)里面?是需要考量的?
4)關(guān)閉定時(shí)器時(shí),定時(shí)器的中斷觸發(fā)時(shí)間是否太緊湊?定時(shí)器的中斷總次數(shù)是否太???都會(huì)影響關(guān)閉定時(shí)器程序運(yùn)行的連續(xù)性。
以下為關(guān)閉程序:
首先打開(kāi)時(shí)鐘,然后才能進(jìn)行關(guān)閉操作。
RCC->APB1ENR|=1<<1; //TIM3時(shí)鐘使能
TIM3->ARR=arr; //設(shè)定計(jì)數(shù)器自動(dòng)重裝值//剛好1ms
TIM3->PSC=psc; //預(yù)分頻器7200,得到10Khz的計(jì)數(shù)時(shí)鐘
TIM3->DIER|=1<<0;//允許更新中斷
關(guān)閉定時(shí)器:TIM3->CR1&=~(0x01);
開(kāi)啟定時(shí)器:TIM3->CR1|=0x01;
MY_NVIC_Init(1,0,TIM3_IRQChannel,2);//搶占1,子優(yōu)先級(jí)0,組