STM32定時器溢位模式設定

2021-07-04 01:14:33 字數 3038 閱讀 5792

stm32定時器溢位模式設定

環境:

主機:win7

開發環境:mdk4.23

mcu:stm32f103cbt6

源**1:

說明:定時器採用tim2,時鐘源為內部8m晶振,向上溢位模式.此定時器用在延時函式,最小可以延時1us,故沒有採用中斷形式定時.

初始化**:

[cpp]view plain

copy

rcc_apb1periphclockcmd(rcc_apb1periph_tim2,enable);  

//重新將timer設定為預設值

tim_deinit(tim2);  

//採用內部時鐘給tim2提供時鐘源

tim_internalclockconfig(tim2);  

timinitstruct.tim_clockdivision = tim_ckd_div2;             //定時器基準頻率8mhz

timinitstruct.tim_prescaler = 8 - 1;                        //計數頻率為1us跳轉1次

timinitstruct.tim_countermode = tim_countermode_up;         //向上計數

timinitstruct.tim_repetitioncounter = 0;  

timinitstruct.tim_period = 0;                               //這個值實際上就是timx->arr,延時開始時重新設定即可

tim_timebaseinit(tim2, &timinitstruct);  

tim_itconfig(tim2, tim_it_update, enable);                  //計數溢位時觸發中斷

tim_cmd(tim2, enable);                                      //開啟計數器

延時函式**:

[cpp]view plain

copy

//延時1us

//最大65536us

void

_delay_us(uint16_t t)  

//延遲1ms

//最大65ms

void

_delay_ms(uint8_t t)  

_delay_us(t * 1000);  

}  

源**2:

說明:定時器採用tim3,時鐘源為內部8m晶振,向上溢位模式.此定時器用在長時間計時,最小計時間隔為100us,故採用中斷形式定時.

初始化**:

[cpp]view plain

copy

//中斷nvic設定:允許中斷,設定優先順序

nvic_prioritygroupconfig(nvic_prioritygroup_1);  

nvic_initstructure.nvic_irqchannel = tim3_irqn;             //更新事件

nvic_initstructure.nvic_irqchannelpreemptionpriority = 0;   //搶占優先順序0

nvic_initstructure.nvic_irqchannelsubpriority = 0;          //響應優先順序1

nvic_initstructure.nvic_irqchannelcmd = enable;             //允許中斷

nvic_init(&nvic_initstructure);                             //寫入設定

rcc_apb1periphclockcmd(rcc_apb1periph_tim3,enable);  

//重新將timer設定為預設值

tim_deinit(tim3);  

//採用內部時鐘給tim3提供時鐘源

tim_internalclockconfig(tim3);  

timinitstruct.tim_clockdivision = tim_ckd_div2;             //定時器基準頻率8mhz

timinitstruct.tim_prescaler = 800 - 1;                      //計數頻率為100us跳轉1次

timinitstruct.tim_countermode = tim_countermode_up;         //向上計數

timinitstruct.tim_repetitioncounter = 0;  

timinitstruct.tim_period = 0;                               //這個值實際上就是timx->arr,延時開始時重新設定即可

tim_timebaseinit(tim3, &timinitstruct);  

//清溢位中斷標誌

tim_clearflag(tim3, tim_flag_update);  

//禁止arr預裝載緩衝器

tim_arrpreloadconfig(tim3, disable);  

//開啟中斷

tim_itconfig(tim3, tim_it_update, enable);                

tim_cmd(tim3, enable);                                      //開啟計數器

中斷函式**:

[cpp]view plain

copy

//tim3中斷

void

tim3_irqhandler(

void

)    

}  

STM32定時器溢位模式計時設定

stm32定時器溢位模式設定 環境 主機 win7 開發環境 mdk4.23 mcu stm32f103cbt6 源 1 說明 定時器採用tim2,時鐘源為內部8m晶振,向上溢位模式.此定時器用在延時函式,最小可以延時1us,故沒有採用中斷形式定時.初始化 rcc apb1periphclockcm...

STM32定時器溢位模式計時設定

stm32定時器溢位模式設定 環境 主機 win7 開發環境 mdk4.23 mcu stm32f103cbt6 源 1 說明 定時器採用tim2,時鐘源為內部8m晶振,向上溢位模式.此定時器用在延時函式,最小可以延時1us,故沒有採用中斷形式定時.初始化 rcc apb1periphclockcm...

stm32關定時器 STM32定時器TIM3程式

include led.h include delay.h include key.h include sys.h include usart.h include timer.h stm32開發板實驗8 定時器中斷實驗 int main void delay init 延時函式初始化 nvic co...