STM32F103C8T6用定时器2写一个1秒钟基准时基变量
时间: 2024-05-02 21:20:19 浏览: 20
以下是使用STM32F103C8T6定时器2编写1秒钟基准时基变量的示例代码:
```
#include "stm32f10x.h"
volatile uint32_t time_ms = 0;
void TIM2_IRQHandler(void) {
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {
time_ms++;
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
}
int main(void) {
// Enable TIM2 clock
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
// Configure TIM2
TIM_TimeBaseInitTypeDef tim_init;
tim_init.TIM_Prescaler = 7200 - 1; // 72MHz / 7200 = 10kHz
tim_init.TIM_CounterMode = TIM_CounterMode_Up;
tim_init.TIM_Period = 10000 - 1; // 10kHz / 10000 = 1Hz
tim_init.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM2, &tim_init);
// Enable TIM2 interrupt
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
NVIC_EnableIRQ(TIM2_IRQn);
// Start TIM2
TIM_Cmd(TIM2, ENABLE);
// Main loop
while (1) {
// Do something
}
}
```
该代码使用定时器2的更新中断来计算时间,并将其存储在名为`time_ms`的全局变量中。在主循环中,可以使用`time_ms`变量来实现基准时基。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)