写一段STM32F103RCT6使用外部12MHZ晶振,系统时钟为72M,定时器3定时100MS的程序
时间: 2024-05-30 21:15:38 浏览: 17
#include "stm32f10x.h"
void TIM3_IRQHandler(void) {
if (TIM_GetITStatus(TIM3, TIM_IT_Update) == SET) {
// 定时器3中断处理
// TODO: 在这里添加你的代码
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
}
}
int main(void) {
// 初始化外部晶振
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
while (RCC_WaitForHSEStartUp() != SUCCESS);
// 初始化系统时钟为72M
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while (RCC_GetSYSCLKSource() != 0x08);
// 初始化定时器3
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_Period = 7200 - 1; // 定时100ms
TIM_TimeBaseInitStruct.TIM_Prescaler = 10000 - 1; // 分频7200,计数频率10K
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);
// 使能定时器3中断
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
// 启动定时器3
TIM_Cmd(TIM3, ENABLE);
while (1) {
// TODO: 在这里添加你的代码
}
}