当前位置: 首页 > news >正文

沈阳做网站的电话百度一下首页登录

沈阳做网站的电话,百度一下首页登录,网站建设备案审核要多久,武汉网页设计公司一.题目分析 (1).题目 (2).题目分析 按键功能分析----存储位置的切换键 a. B1按下切换存储位置,切换后定时时间设定为当前位置存储的时间 b. B2短按切换时分秒高亮,设置完成后,长按把设置的时…

一.题目分析

(1).题目

(2).题目分析

  1. 按键功能分析----存储位置切换键

a.  B1按下切换存储位置切换定时时间设定当前位置存储时间

b.  B2短切换时分秒+高亮,设置完成后设置时间保存当前位置如果设置定时时间需要存储,直接按定时器启动按键

c.  B3短按单次递增时分秒长按超过8s开始迅速递增

d.  B4,定时器启动,运行期间短按,定时器暂停再次按下定时器恢复运行B4超过0.8s取消定时器运行

(3).逻辑导图

二.CubeMX配置

由于蓝桥杯使用的板子都是STM32G431RBT6,配置都是相同的,模板已经在第六届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)-CSDN博客配置完成,大家可以前往学习

三.相关代码实现

(1)MAIN

1.全局变量声明

#include "main.h"
#include "RCC\bsp_rcc.h"
#include "KEY_LED\bsp_key_led.h"
#include "LCD\bsp_lcd.h"
#include "I2C\bsp_i2c.h"
#include "TIM\bsp_tim.h"
//*减速变量
__IO uint32_t uwTick_Key_Set_Point = 0;//控制Key_Proc的执行速度
__IO uint32_t uwTick_Led_Set_Point = 0;//控制Led_Proc的执行速度
__IO uint32_t uwTick_Lcd_Set_Point = 0;//控制Lcd_Proc的执行速度
//全局变量
__IO uint32_t uwTick_Long_Short_Judge = 0;//短长按键判断专用
uint8_t ucState;//系统整体运行状态
uint8_t ucHour_Min_Sec[3];//小时分钟秒
uint8_t Storage_Num = 1;//存储序号
__IO uint32_t Sec_Boss = 0;//全局的秒变量
__IO uint32_t uwTick_Sec_Boss = 0;//控制秒的递减
__IO uint32_t uwTick_LED_BULING = 0;//控制LED闪烁
//***子函数声明区
void Key_Proc(void);
void Led_Proc(void);
void Lcd_Proc(void);

2.系统主函数

int main(void)
{SystemClock_Config();/*bsp资源的初始化*/KEY_LED_Init();   LCD_Init();LCD_Clear(White);LCD_SetBackColor(White);LCD_SetTextColor(Blue);        I2CInit();PWM_OUTPUT_TIM3_Init();/*外设使用基本配置*/    iic_24c02_read(ucHour_Min_Sec, 0, 3);         while (1){Key_Proc();Led_Proc();Lcd_Proc(); }}

3.子函数

B3扫描子函数

a.逻辑分析

由于按键3没有长按短按的判断,因此单独写一个函数,此函数的功能是判断是在状态几的时候按下的B3,以此对时分秒进行置零操作(每24小时/每60分钟/ 每60秒就置零)

b.程序源码

#include "main.h"
#include "RCC\bsp_rcc.h"
#include "KEY_LED\bsp_key_led.h"
#include "LCD\bsp_lcd.h"
#include "I2C\bsp_i2c.h"
#include "TIM\bsp_tim.h"
//*减速变量
__IO uint32_t uwTick_Key_Set_Point = 0;//控制Key_Proc的执行速度
__IO uint32_t uwTick_Led_Set_Point = 0;//控制Led_Proc的执行速度
__IO uint32_t uwTick_Lcd_Set_Point = 0;//控制Lcd_Proc的执行速度
//全局变量
__IO uint32_t uwTick_Long_Short_Judge = 0;//短长按键判断专用
uint8_t ucState;//系统整体运行状态
uint8_t ucHour_Min_Sec[3];//小时分钟秒
uint8_t Storage_Num = 1;//存储序号
__IO uint32_t Sec_Boss = 0;//全局的秒变量
__IO uint32_t uwTick_Sec_Boss = 0;//控制秒的递减
__IO uint32_t uwTick_LED_BULING = 0;//控制LED闪烁
//***子函数声明区
void Key_Proc(void);
void Led_Proc(void);
void Lcd_Proc(void);
按键扫描子函数

a.逻辑分析

b.程序源码

//***按键扫描子函数
void Key_Proc(void)
{if((uwTick -  uwTick_Key_Set_Point)<50)    return;//减速函数uwTick_Key_Set_Point = uwTick;ucKey_Val = Key_Scan();unKey_Down = ucKey_Val & (ucKey_Old ^ ucKey_Val); ucKey_Up = ~ucKey_Val & (ucKey_Old ^ ucKey_Val);    ucKey_Old = ucKey_Val;if(unKey_Down){uwTick_Long_Short_Judge = uwTick;}    if((uwTick - uwTick_Long_Short_Judge) < 800)//短按识别{switch(ucKey_Up){case 2://如果B2短按if( ++ucState == 4)ucState = 1;break;case 4://如果B4短按if(ucState != 4){    ucState = 4;Sec_Boss = (__IO uint32_t)(3600*ucHour_Min_Sec[0] + 60*ucHour_Min_Sec[1] +ucHour_Min_Sec[2]);HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);    //PA6,启动PWM的产生}else {ucLed = 0x00;        //关闭LED闪烁HAL_TIM_PWM_Stop(&htim3,TIM_CHANNEL_1); //关闭PWM生成ucState = 5;}break;case 3://如果B3短按,时分秒进行+1操作(一会儿写)B3_Ctrl();break;case 1://如果B1短按,切换存储位置(一会儿写)if(++Storage_Num == 6) Storage_Num = 1;iic_24c02_read(ucHour_Min_Sec, (3*(Storage_Num-1)), 3);                    break;        }}else //长按{switch(ucKey_Val){case 2://如果B2长按,进入状态0if((ucState == 1)||(ucState == 2)||(ucState == 3)){                iic_24c02_write(ucHour_Min_Sec,(3*(Storage_Num-1)) , 3);            ucState = 0;}break;case 3://如果B3长按,时分秒连续进行+1操作(一会儿写)B3_Ctrl();                break;    case 4://如果B4长按,运行状态下进入状态0if(ucState == 4){ucLed = 0x00;        //关闭LED闪烁HAL_TIM_PWM_Stop(&htim3,TIM_CHANNEL_1); //关闭PWM生成        iic_24c02_read(ucHour_Min_Sec, (3*(Storage_Num-1)), 3);                        ucState = 0;}                break;            }}
LED扫描子函数

a.程序源码

void Led_Proc(void)
{if((uwTick -  uwTick_Led_Set_Point)<200)    return;//减速函数uwTick_Led_Set_Point = uwTick;  LED_Disp(ucLed);
}

 LCD扫描子函数

a.逻辑分析

b. 程序源码

void Lcd_Proc(void)
{if((uwTick -  uwTick_Lcd_Set_Point)<100)    return;//减速函数uwTick_Lcd_Set_Point = uwTick;if(ucState == 4)//此状态控制递减操作{if((uwTick - uwTick_Sec_Boss) >= 1000)//1s到来了,控制倒计时{uwTick_Sec_Boss = uwTick;Sec_Boss--;ucHour_Min_Sec[0] = Sec_Boss/3600;ucHour_Min_Sec[1] = Sec_Boss%3600/60;        ucHour_Min_Sec[2] = Sec_Boss%3600%60;        }if((uwTick - uwTick_LED_BULING) >= 500)//0.5s到来了,控制LED闪烁{uwTick_LED_BULING = uwTick;        ucLed ^= 0x01;    }}sprintf((char *)Lcd_Disp_String, "  No %1d",Storage_Num);LCD_DisplayStringLine(Line3, Lcd_Disp_String);    if(ucState == 1)   LCD_SetBackColor(Yellow);LCD_DisplayChar(Line5, 224, (ucHour_Min_Sec[0]/10 + 0x30));LCD_DisplayChar(Line5, 208, (ucHour_Min_Sec[0]%10 + 0x30));    LCD_SetBackColor(White);LCD_DisplayChar(Line5, 192, ':');    if(ucState == 2)   LCD_SetBackColor(Yellow);LCD_DisplayChar(Line5, 176, (ucHour_Min_Sec[1]/10 + 0x30));LCD_DisplayChar(Line5, 160, (ucHour_Min_Sec[1]%10 + 0x30));    LCD_SetBackColor(White);LCD_DisplayChar(Line5, 144, ':');        if(ucState == 3)   LCD_SetBackColor(Yellow);LCD_DisplayChar(Line5, 128, (ucHour_Min_Sec[2]/10 + 0x30));LCD_DisplayChar(Line5, 112, (ucHour_Min_Sec[2]%10 + 0x30));            LCD_SetBackColor(White);switch(ucState)//仅用来表示状态信息{case 0:sprintf((char *)Lcd_Disp_String, "    Standby     ");LCD_DisplayStringLine(Line7, Lcd_Disp_String);            break;case 1:case 2:case 3:sprintf((char *)Lcd_Disp_String, "    Setting     ");LCD_DisplayStringLine(Line7, Lcd_Disp_String);        break;    case 4:sprintf((char *)Lcd_Disp_String, "    Running     ");LCD_DisplayStringLine(Line7, Lcd_Disp_String);            break;case 5:sprintf((char *)Lcd_Disp_String, "    Pause     ");LCD_DisplayStringLine(Line7, Lcd_Disp_String);            break;}
}

(2)BSP

第六届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)-CSDN博客里面有详细的讲解,大家可前往此链接学习

http://www.hkea.cn/news/752697/

相关文章:

  • 永年网站建设友链互换平台推荐
  • 企业网站的设计公司网络广告营销的典型案例
  • 高校思政主题网站建设的意义关键词歌词任然
  • 哪里做网站比较快2345网址导航下载桌面
  • 广州建设委员会官方网站凡科建站下载
  • 全球做网站的公司排名百度一下你就知道官网
  • 小企业网站价格免费发链接的网站
  • 买了空间和域名 怎么做网站哪家公司网站做得好
  • 网站备案是否关闭衡阳网站建设公司
  • 遂昌建设局网站个人怎么做网站
  • 软件开发和网站建设网络营销的未来6个发展趋势
  • 做网站一年多少钱免费seo网站推广
  • 智通人才网东莞最新招聘信息官网seo是如何做优化的
  • 个人做跨境电商网站百度地图导航手机版免费下载
  • 阿里云注册网站之后怎么做网站百度联盟是什么
  • 动画制作视频河南网站排名优化
  • 网站关键词怎么做排名掌门一对一辅导官网
  • 现在什么网站做推广比较好网页设计需要学什么
  • 个人购物网站 怎么建网络营销包括
  • 有没有做鸭的网站工作室招聘广州网站优化工具
  • 深圳营销外深圳网络营销公司seo和sem的联系
  • 专业的网站制作公司哪家好竞价专员是做什么的
  • 海南省建设厅网站百度seo霸屏软件
  • 淄博张店做网站的公司爱站小工具圣经
  • wordpress w3seo优化自学
  • 临沂手机建站模板微信seo排名优化软件
  • 网站管理员怎么做板块建设艺人百度指数排行榜
  • 如何创建企业网站网络舆情处置的五个步骤
  • 做站长工具网站周口seo公司
  • 泉州自助建站系统地推