定时器
1.配置RCC
2.SysTick_Config函数
3.Delay函数
4.SysTick_Handler函数
1.配置RCC
void RCC_Config(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF |
RCC_APB2Periph_GPIOG, ENABLE);
}
2.SysTick_Config(systick配置函数)
if (SysTick_Config(72000)) //SysTick_Config: return 0->success 1->failure
{
while(1);
}
3.Delay
void Delay(uint32_t times){
TimingDelay = times;
while (TimingDelay != 0) ;
}
4.SysTick_Handler函数(systick捕捉函数)
void SysTick_Handler(void)
{
// printf("SysTick_Handler");
TimingDelay--;
}
main.c
#include "stm32f10x.h"
#include "led.h"
#include "stm32f10x_rcc.h"
#include "misc.h"
#include <stdio.h>
#include "usart.h"
static __IO uint32_t TimingDelay=0;
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
void Delay(uint32_t times){
TimingDelay = times;
while (TimingDelay != 0) ;
}
void RCC_Config(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF |
RCC_APB2Periph_GPIOG, ENABLE);
}
/**
* @brief This function handles SysTick Handler.
* @param None
* @retval None
*/
void SysTick_Handler(void)
{
// printf("SysTick_Handler");
TimingDelay--;
}
int main(){
RCC_Config();
LED_GPIO_Config();
USART1_Config();
if (SysTick_Config(72000)) //SysTick_Config: return 0->success 1->failure
{
while(1);
}
while(1){
LED1(ON);
Delay(1000);
printf("LED1(ON)");
LED1(OFF);
Delay(1000);
printf("LED1(OFF)");
}
}
本文介绍STM32微控制器中定时器的应用实例,通过配置RCC时钟、使用SysTick_Config函数设置定时周期,并结合Delay函数实现延时功能。此外,还展示了如何在main函数中循环控制LED灯的开关状态。
2万+

被折叠的 条评论
为什么被折叠?



