写一段STM32F103RCT6使用外部12MHZ晶振,系统时钟为72M,定时器3定时1S的程序
时间: 2024-05-25 10:15:45 浏览: 195
#include "stm32f10x.h"
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3, TIM_IT_Update) == SET)
{
// 定时器3中断发生,执行相应的操作
TIM_ClearITPendingBit(TIM3, TIM_IT_Update); // 清除定时器3中断标志位
}
}
int main(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // 使能定时器3时钟
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 71999; // 自动重装载寄存器的值,计数器计到这个值后会自动清零
TIM_TimeBaseStructure.TIM_Prescaler = 999; // 分频系数,计数器每计一次需要多少个时钟周期
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // 初始化定时器3
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; // 定时器3中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 优先级分组为0,优先级为0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 子优先级为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // 使能中断通道
NVIC_Init(&NVIC_InitStructure); // 初始化中断
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); // 使能定时器3更新中断
TIM_Cmd(TIM3, ENABLE); // 使能定时器3
while(1)
{
// 主程序循环
}
}
阅读全文