我们要振作精神,下苦功学习。下苦功,三个字,一个叫下,一个叫苦,一个叫功,一定要振作精神,下苦功。——毛泽东
这期是呼吸灯函数的使用,注释以备好。呼吸灯的原理是PWM调频,他这里使用++--的方法去实现的,所以要在死循环里调用,才可以有效果,令我很奇怪的是,问为什么新大陆的按键不用中断做,这意味着有的代码会起冲突,新大陆库里使用了定时器去做,去读状态判断,再放到死循环里才能实现按键效果。有点憨。
/**
******************************************************************************
* File Name : main.c
* Description : Main program body
******************************************************************************
*/
#include <string.h>
#include "board.h"
#include "hal_key.h"
#include "tim-board.h"
#include "timer_handles.h"
#include "led_light.h"//呼吸灯必要头文件
/**********************************************************************************************
*函数:void Init( void )
*功能:平台初始化
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void Init() {
// 开发板平台初始化
BoardInitMcu();
BoardInitPeriph();
keys_init();//按键初始化
setTimer2Callback(Time2Handler);
Tim2McuInit(1);//定时器初始化,设置定时中断1ms中断一次
}
/**********************************************************************************************
*函数:void KeyDownHandler( void )
*功能:按钮事件监听
*输入:无
*输出:无
*特殊说明:无
**********************************************************************************************/
void KeyDownHandler(void) {
}
/**********************************************************************************************
*函数:void handlerPre10Ms( void )
*功能:10毫秒循环
*输入:无
*输出:无
*特殊说明:循环处理总时长300ms
**********************************************************************************************/
void handlerPre10Ms(void) {
for (int delay = 0; delay < 30; delay++) {
HAL_Delay(10);
}
}
/**
* Main application entry point.
*/
int main( void )
{
Init();
setBreathLedArg(64,128);//设置呼吸比列
switchLed1Breath();//开启LED1呼吸灯
switchLed2Breath();//开启LED2呼吸灯
while( 1 )
{
breathLed();//执行函数
}
}
不难,自己去理解吧,哈哈。希望你们可以转发给有需要的人