前言
本系列文章統(tǒng)一圍繞STM32F103C8T6最小系統(tǒng)開發(fā)板進行記錄,如涉及其他開發(fā)板將會特別說明。
定時器時鐘頻率
SystemInit()->SetSysClock()->SetSysClockTo72()->設置APB1為2分頻
->通用定時器時鐘頻率為2*36MHz = 72MHz
image.png
定時器計時配置思路
開啟定時器時鐘
通用定時器掛載在APB1總線下。
配置定時器時基單元+使能定時器
image.png
溢出時間為1ms:arr = 1, psc = 35999
TIM_CounterMode_Up:向上計數(shù)模式
TIM_CKD_DIV1:決定數(shù)字濾波器采樣頻率的參數(shù),在輸入捕獲時會被用到。
配置定時器中斷源+NVIC
TIM_IT_Update:溢出中斷
代碼
時基單元配置:1ms
static void _timeBase_init(TIM_TypeDef *tim, u16 arr, u16 psc) { TIM_TimeBaseInitTypeDef timBase; timBase.TIM_Period = arr; timBase.TIM_Prescaler = psc; timBase.TIM_CounterMode = TIM_CounterMode_Up; // 向上計數(shù) timBase.TIM_ClockDivision = TIM_CKD_DIV1; // 初始化時基單元 TIM_TimeBaseInit(tim, &timBase); // 使能定時器 TIM_Cmd(tim, ENABLE);}
NVIC配置
static void _timer_nvic_init(void){ NVIC_InitTypeDef tim; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); tim.NVIC_IRQChannel = TIM2_IRQn; tim.NVIC_IRQChannelSubPriority = 1; tim.NVIC_IRQChannelPreemptionPriority = 0; tim.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&tim);}
定時器初始化
void bsp_timer_init(void){ // 開啟TIM3時鐘 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 時基單元配置:1ms _timeBase_init(TIM2, 1, 35999); // 配置NVIC _timer_nvic_init(); // 配置TIM3中斷為溢出中斷 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);}
中斷處理函數(shù)
void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET) {
// 清除中斷標志位
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
tim_cnt++;
}
}
主函數(shù)
現(xiàn)象:tim_cnt每1ms進行自增,達到1000時置為0,并進行LED狀態(tài)翻轉。
int main()
{
u8 led_state = 0;
bsp_timer_init();
drv_led_init();
while (1) {
if (tim_cnt == 1000) {
tim_cnt = 0;
led_state ^= 1;
drv_led_ctl(led_state);
}
}
return 0;
}
上一篇:stm32 TIM(通用定時器)
下一篇:基于STM32的對射式紅外傳感以及旋轉編碼器
推薦閱讀最新更新時間:2025-06-29 20:36




設計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- LTC3806 反激式控制器改善了多輸出應用的交叉調節(jié)
- BTS 723 GW智能高端電源開關典型應用電路
- 具有正電源的 LT3091HDE 500mA LED 驅動器的典型應用
- SG3525A驅動功率場效應管用于脈寬調制器控制電路的典型應用
- LTC2945IMS-1 隔離式寬范圍 I2C 功率監(jiān)視器的典型應用
- 用于 LED 照明的 DC 到 DC 單路輸出電源
- STEVAL-ILL015V2,基于 LED2472G 和 STM32 HB LED 驅動器的評估板,具有診斷功能
- 使用 ROHM Semiconductor 的 BD45471 的參考設計
- MAP9004,使用 MAP9004 高壓交流 LED 驅動器的典型應用電路,用于 4 通道復合解決方案
- LTC3100,具有電壓排序功能的單節(jié)電池雙輸出轉換器