stm32定时器led闪烁程序
时间: 2023-07-06 08:38:45 浏览: 193
STM32的LED闪烁程序.zip
以下是一个基于STM32的定时器程序,用于控制LED闪烁:
```
#include "stm32f4xx.h"
void TIM2_IRQHandler(void)
{
if(TIM2->SR & TIM_SR_UIF)
{
TIM2->SR &= ~TIM_SR_UIF; // 清除中断标志位
// LED翻转
GPIOG->ODR ^= GPIO_ODR_OD13;
}
}
int main(void)
{
// 使能GPIOG时钟
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOGEN;
// 配置GPIOG13为输出模式
GPIOG->MODER |= GPIO_MODER_MODE13_0;
GPIOG->OTYPER &= ~GPIO_OTYPER_OT13;
GPIOG->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR13;
GPIOG->PUPDR &= ~GPIO_PUPDR_PUPD13;
// 使能定时器时钟
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
// 设置定时器预分频系数,定时器时钟为84MHz/840=100kHz
TIM2->PSC = 840-1;
// 设置定时器计数值,定时器中断周期为1秒
TIM2->ARR = 10000-1;
// 使能定时器更新中断
TIM2->DIER |= TIM_DIER_UIE;
// 使能定时器
TIM2->CR1 |= TIM_CR1_CEN;
// 配置定时器中断优先级
NVIC_SetPriority(TIM2_IRQn, 0);
NVIC_EnableIRQ(TIM2_IRQn);
while(1)
{
// 主程序逻辑
}
return 0;
}
```
在上述代码中,首先使能GPIOG时钟,并配置GPIOG13为输出模式。然后使能定时器时钟,设置定时器的预分频系数和计数值,使能定时器更新中断,并启动定时器。在定时器中断处理程序中,LED翻转。最后,配置定时器中断优先级并启用中断。在主程序逻辑中,可以添加其他需要执行的代码。
阅读全文