——————————————————————
采用STM32F030C8T6核心板
STlink为调试下载器
Keil-MDK5 V5.14
固件库 V1.5.0
——————————————————————
老规矩 不讲原理,想知道详细的请看网路上各类大神的视频
我们将在上一讲的基础上改编,让LED能亮一秒,灭一秒,精确定时
精确定时采用的是STM32内部的sysTick定时器(滴答定时器)
一、文件结构
二、驱动程序
在Bsp目录下建立
systick.c 和 systick.h 文件
#ifndef __SYSTICK_H //类似led.h的写法
#define __SYSTICK_H
#include "stm32f0xx.h"
void Systick_Init(void);
void Delay_ms(__IO uint32_t nTime);
void TimingDelay_Decrement(void);
#endif /* __SYSTICK_H */
在systick.c中写入
#include "systick.h"
static __IO uint32_t TimingDelay;
void Delay_ms(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
/**
* @brief Decrements the TimingDelay variable.
* @param None
* @retval None
*/
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
void Systick_Init(void)
{
if (SysTick_Config(SystemCoreClock / 1000))//配置为1ms
{
/* Capture error */
while (1);
}
}
既然用到定时器,和51类似,也要用定时器中断
在stm32f0xx.it.c 中找到SysTick_Handler在函数内部添加一句话
void SysTick_Handler(void)
{
TimingDelay_Decrement();//调动中断函数
}
三、主函数
#include "main.h"
#include "led.h"
#include "systick.h"
int main(void)
{
SystemInit(); //初始化系统
Systick_Init();//初始化滴答定时器
led_init();
while (1)
{
led_on();
Delay_ms(1000);
led_off();
Delay_ms(1000);
}
}