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

进阶——第十六蓝桥杯嵌入式熟练度练习(串口的小BUG补充-字符接受不完整和字符接受错误)

1.解决接受不完整问题

假如没接受完成,执行函数,就可能会把count直接清零,就会重新接受\

  while (1)
  {
	  if(rx_count!=0)
	  {
		  uint8_t temp=rx_count;
	     HAL_Delay(1);
	     if(temp==rx_count)
		 uart_proc();	  
	  }
	  key_proc();
	  rxclear_proc();
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

2.解决接受错误下一次不能执行的问题

滴答时钟
extern uint32_t usrxclear;
void SysTick_Handler(void)
{

  HAL_IncTick();
   key_time++;
   usrxclear++;
}

主函数

定义
 uint32_t usrxclear;
void rxclear_proc(void);
 串口执行函数
void uart_proc(void)
{
	if(rx_count==4)
	{ 
		if(strcmp(rx_buf,"LEDO")==0)
		{
		led_show(0x08);
		}
		if(strcmp(rx_buf,"LEDC")==0)
		{
		led_show(0x08^0x08);
		}
	rx_count=0;
	memset(rx_buf,0,30);	
	}
}
超时清零函数 
void rxclear_proc(void)
{
    // 检查全局变量 usrxclear 的值是否小于 50
    if(usrxclear < 50)
    // 如果小于 50,函数直接返回,不执行后续的重置操作
        return;
    else
        // 当 usrxclear 大于等于 50 时,将 usrxclear 重置为 0
        usrxclear = 0;
    // 将另一个全局变量 rx_count 重置为 0,这个变量可能用于记录接收数据的数量
    rx_count = 0;
    // 使用 memset 函数将 rx_buf 数组的前 30 个字节设置为 0
    // rx_buf 通常是用于存储接收到的数据的缓冲区
    memset(rx_buf, 0, 30);
}

 中断回调
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{   
	usrxclear=0;
    rx_buf[rx_count++]=rx_data;
   HAL_UART_Receive_IT(&huart1,&rx_data,1);
}

相关文章:

  • RagFlow + Docker Desktop + Ollama + DeepSeek-R1本地部署自己的本地AI大模型工具
  • Go GUI 框架, energy many-browser 示例解读
  • 大语言模型需要的可观测性数据的关联方式
  • 【MySQL例题】我在广州学Mysql 系列——有关数据备份与还原的示例
  • DeepSeek 中的 GRPO 算法全面解析
  • 力扣-二叉树-226 翻转二叉树
  • node.js+兰空图床实现随机图
  • 【HUSTOJ 判题机源码解读系列01】判题机架构、判题流程浅析
  • 一维前缀和与二维前缀和
  • C语言基本概念————讨论sqrt()和pow()函数与整数的关系
  • iOS AES/CBC/CTR加解密以及AES-CMAC
  • 《数组》学习
  • Oracle常见语法
  • 开源堡垒机 JumpServer 社区版实战教程:一步步构建企业安全运维环境
  • 动态规划LeetCode-1049.最后一块石头的重量Ⅱ
  • GESP2024年9月认证C++七级( 第三部分编程题(1)小杨寻宝)
  • 【SpringBoot3.x+】slf4j-log4j12依赖引入打印日志报错的两种解决方法
  • 腿足机器人之一- 机械与电子组件概览
  • 机器学习:决策树
  • Java进阶笔记(中级)
  • 怎样自己做网络推广网站/网店营销推广
  • 外国人可以在中国做网站吗/seo整站优化费用
  • 网站建设技术外文/搜索引擎优化论文3000字
  • 合肥专业做网站的公司哪家好/长春做网络优化的公司
  • 成都学网站建设费用/广告主平台
  • 新型城镇化建设网站/怎么建个网站