第十二届蓝桥杯嵌入式设计与开发项目 省赛第一题


前言

第十二届省赛第一题考点主要有

  • LED
  • LCD
  • USART串口
  • PWM输出
  • 按键

模块内容较简单,主要考查串口接收对数据的处理
模块代码总结请看这里

蓝桥杯嵌入式基于STM32G4的模块总结【HAL库】【省赛】

题目

请添加图片描述

请添加图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

整体框架

总结一下本体要实现以下功能
在这里插入图片描述
先把每个模块实现,在把每个模块串起来

代码实现

主函数

//全局变量
float prince_CNBR = 2.0, prince_VNBR = 4.0;
uint8_t num_CNBR = 2, num_VNBR = 4;
uint8_t No_Use_Num = 8;

int main(void)
{
   
	//初始化
   HAL_Init();
   SystemClock_Config();
   MX_GPIO_Init();
   MX_USART1_UART_Init();
   MX_TIM3_Init();
	
	//LCD初始化
	LCD_Init();
	LCD_Clear(Black);
	LCD_SetBackColor(Black);
	LCD_SetTextColor(White);
	
	//关闭LED1 LED2
	LED1_Dis(1);
	LED2_Dis(1);
	
	//打开串口中断
	HAL_UART_Receive_IT(&huart1,(uint8_t *)&rx_one, 1);
	
	//初始化PA7输出低电平
	HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
	__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2, 0);
	

   while (1)
   {
   
		Lcd_Dis();     //LCD显示函数
		key_proc();    //按键处理函数
		Usart_proc();  //串口处理函数
   }
}

按键

//按键相关变量
__IO uint32_t uwTick_key;
uint8_t key_val, key_dowm, key_up, key_old;
uint8_t duty=0;

void key_proc()
{
   
	if(uwTick - uwTick_key < 50)return;
	uwTick_key = uwTick;
	
	key_val = key_scan();
	key_dowm = key_val & (key_old ^ key_val);
	key_up = ~key_val & (key_old ^ key_val);
	key_old = key_val;
	
	switch(key_dowm)
	{
   
		case 1:
			Dis_mode ^= 0x1;
			LCD_Clear(Black);
			break;
		case 2:
			if(Dis_mode == 1)
			{
   
				prince_CNBR+=0.5;
				prince_VNBR+=0.5;
			}
			break;
		case 
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值