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

2021-09-20 03:42:32 字數 4803 閱讀 8831

stm32定時器溢位模式設定

環境:

主機:win7

開發環境:mdk4.23

mcu:stm32f103cbt6

源**1:

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

初始化**:

rcc_apb1periphclockcmd(rcc_apb1periph_tim2,enable);//重新將timer設定為預設值tim_deinit(tim2);//採用內部時鐘給tim2提供時鐘源tim_internalclockconfig(tim2);timinitstruct.tim_clockdivision = tim_ckd_div2;      //定時器基準頻率8mhztiminitstruct.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);           //開啟計數器

延時函式**:

//延時1us

//最大65536us

void _delay_us(uint16_t t)//延遲1ms

//最大65ms

void _delay_ms(uint8_t t) _delay_us(t * 1000);}

源**2:

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

初始化**:

//中斷nvic設定:允許中斷,設定優先順序nvic_prioritygroupconfig(nvic_prioritygroup_1);nvic_initstructure.nvic_irqchannel = tim3_irqn;       //更新事件nvic_initstructure.nvic_irqchannelpreemptionpriority = 0;   //搶占優先順序0nvic_initstructure.nvic_irqchannelsubpriority = 0;          //響應優先順序1nvic_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;      //定時器基準頻率8mhztiminitstruct.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);           //開啟計數器

中斷函式**:

//tim3中斷

void

tim3_irqhandler

(void)

}

stm32定時器溢位模式設定

環境:

主機:win7

開發環境:mdk4.23

mcu:stm32f103cbt6

源**1:

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

初始化**:

rcc_apb1periphclockcmd(rcc_apb1periph_tim2,enable);//重新將timer設定為預設值tim_deinit(tim2);//採用內部時鐘給tim2提供時鐘源tim_internalclockconfig(tim2);timinitstruct.tim_clockdivision = tim_ckd_div2;      //定時器基準頻率8mhztiminitstruct.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);           //開啟計數器

延時函式**:

//延時1us

//最大65536us

void _delay_us(uint16_t t)//延遲1ms

//最大65ms

void _delay_ms(uint8_t t) _delay_us(t * 1000);}

源**2:

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

初始化**:

//中斷nvic設定:允許中斷,設定優先順序nvic_prioritygroupconfig(nvic_prioritygroup_1);nvic_initstructure.nvic_irqchannel = tim3_irqn;       //更新事件nvic_initstructure.nvic_irqchannelpreemptionpriority = 0;   //搶占優先順序0nvic_initstructure.nvic_irqchannelsubpriority = 0;          //響應優先順序1nvic_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;      //定時器基準頻率8mhztiminitstruct.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);           //開啟計數器

中斷函式**:

//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,故沒有採用中斷形式定時.初始化 cpp view plain copy r...

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...