stm32f103c8t6定时器1中断代码
时间: 2023-08-23 21:06:37 浏览: 206
以下是基本的STM32F103C8T6定时器1中断代码:
```
#include "stm32f10x.h"
void TIM1_UP_IRQHandler(void) // TIM1中断处理程序
{
if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET) // 检查TIM1更新中断是否发生
{
// 这里添加需要执行的代码
TIM_ClearITPendingBit(TIM1, TIM_IT_Update); // 清除TIM1更新中断标志
}
}
int main(void)
{
// 初始化TIM1
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); // 使能TIM1时钟
TIM_TimeBaseStructure.TIM_Period = 1000; // 设置计数器自动重装值
TIM_TimeBaseStructure.TIM_Prescaler = 71; // 设置预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数模式
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE); // 使能TIM1更新中断
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn; // TIM1中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 抢占优先级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 子优先级0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM1, ENABLE); // 启动TIM1
while (1)
{
// 这里可以添加其他需要执行的代码
}
}
```
上述代码实现了TIM1的基本设置及中断处理。在中断处理函数`TIM1_UP_IRQHandler`中,添加需要执行的代码即可。由于此处设置了自动重装值为1000,预分频值为71,所以TIM1的中断周期为:
```
T = (1000 + 1) * (71 + 1) / 72M = 1ms
```
也就是每1ms触发一次中断。
阅读全文