2021市赛开发题

1|02021市赛开发题

1|1题目:

**3、LoRa 模块开发 ** 请选手根据任务要求完成 LoRa 模块功能开发,开发完成后需要将程序发布 到 LoRa 模块,通上电源等待裁判评判。 **任务要求: ** 1. 设备通电后 LED1,LED2 熄灭。 2. 点击 Key2 键一次,可以控制 LED1 灯常亮,再点击一次 Key2 键控制LED1 灯熄灭。 3. 点击 Key3 键一次,可以控制 LED2 以间隔 1 秒的频率闪烁,再点击一次Key3 键控制 LED2 灯熄灭。

1|2分析

  • 按钮注意要清除标志位

  • uint8 长度最大为255

1|3代码

/** ****************************************************************************** * 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" /********************************************************************************************** *函数:void Init( void ) *功能:平台初始化 *输入:无 *输出:无 *特殊说明:无 **********************************************************************************************/ void Init() { // 开发板平台初始化 BoardInitMcu(); BoardInitPeriph(); keys_init();//按键初始化 setTimer2Callback(Time2Handler); Tim2McuInit(1);//定时器初始化,设置定时中断1ms中断一次 } /********************************************************************************************** *函数:void KeyDownHandler( void ) *功能:按钮事件监听 *输入:无 *输出:无 *特殊说明:无 **********************************************************************************************/ uint8_t flag = 0; uint32_t t = 0; void KeyDownHandler(void) { if(isKey3Pressed()){ flag =(flag == 1)?0:1;//设置标志 resetKey3();//清除标志位 if(flag == 1)GpioWrite(&Led2,0);//按下立马亮灯 else GpioWrite(&Led2,1);//再按立马灭灯 } if(flag == 1){ HAL_Delay(1);//延时1ms t++; if(t == 1000){//是否为1秒 GpioToggle(&Led2);//切换状态 t = 0; } } if(isKey2Pressed()){ GpioToggle(&Led1); resetKey2(); } } /********************************************************************************************** *函数: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(); GpioWrite(&Led1,1); GpioWrite(&Led2,1); while( 1 ) { KeyDownHandler();//按键检测函数 } }

__EOF__

本文作者~内个臣呐~
本文链接https://www.cnblogs.com/Xin-chen/p/16798199.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ~内个臣呐~  阅读(137)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示