stm32f103c8t6定时器1定时中断配置代码
时间: 2023-08-29 08:12:58 浏览: 448
以下是stm32f103c8t6定时器1定时中断配置代码,供您参考:
```c
#include "stm32f10x.h"
void TIM1_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); // 使能TIM1时钟
TIM_TimeBaseStructure.TIM_Period = 1000 - 1; // 自动重装载值
TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1; // 时钟预分频值
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数模式
TIM_TimeBaseStructure.TIM_ClockDivision = 0; // 时钟分频因子
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; // 重复计数器
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 = 1; // 抢占优先级1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 子优先级0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // TIM1中断允许
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM1, ENABLE); // TIM1使能
}
void TIM1_UP_IRQHandler(void)
{
if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET) // TIM1溢出中断
{
TIM_ClearITPendingBit(TIM1, TIM_IT_Update); // 清除TIM1溢出中断标志位
// TODO: 在此处添加中断处理代码
}
}
int main(void)
{
TIM1_Configuration();
while (1)
{
// TODO: 在此处添加主函数代码
}
}
```
在此代码中,定时器1的时钟预分频值为72-1,自动重装载值为1000-1,即当计数器计数到1000时触发中断。中断处理函数为`TIM1_UP_IRQHandler()`,在其中添加需要执行的中断处理代码即可。
阅读全文