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

提供网站建设公司哪家好地方门户模板

提供网站建设公司哪家好,地方门户模板,开个小公司注册资金要多少,东莞浩智专业网站建设哪家好1. 前言 最近在准备16届的蓝桥杯嵌入式赛道的国赛,打算出一个系列的博客,记录STM32G431RBT6这块比赛用板上所有模块可能涉及到的所有考点,如果有错误或者遗漏欢迎各位大佬斧正。 本系列博客会分为以下两大类: 1.1. 单独模块的讲…

 1. 前言

最近在准备16届的蓝桥杯嵌入式赛道的国赛,打算出一个系列的博客,记录STM32G431RBT6这块比赛用板上所有模块可能涉及到的所有考点,如果有错误或者遗漏欢迎各位大佬斧正。

本系列博客会分为以下两大类:

1.1. 单独模块的讲解

在这部分,我会分享自己总结的各个模块的相关配置、代码书写模板,涉及到的大致框架如下:

这个框架后续可能会不断更新,欢迎各位给出建议。

这一大类相关的文章链接如下(持续补充中):

【蓝桥杯嵌入式】【模块】一、系统初始化-CSDN博客

【蓝桥杯嵌入式】【模块】二、LED相关配置及代码模板-CSDN博客

【蓝桥杯嵌入式】【模块】三、LCD相关配置及代码模板-CSDN博客

【蓝桥杯嵌入式】【模块】四、按键相关配置及代码模板-CSDN博客

【蓝桥杯嵌入式】【模块】五、ADC相关配置及代码模板-CSDN博客

【蓝桥杯嵌入式】【模块】六、PWM相关配置及代码模板-CSDN博客

【蓝桥杯嵌入式】【模块】七、IIC相关配置及代码模板-CSDN博客

【蓝桥杯嵌入式】【模块】八、UART相关配置及代码模板-CSDN博客

1.2. 蓝桥杯各届的真题、模拟题复盘及个人答案

在这一部分,我会分享个人练过的所有题的复盘思路及代码,每篇文章结构如下:

这一大类相关的文章链接如下(持续补充中):

【蓝桥杯嵌入式】【复盘】第13届国赛真题_蓝桥杯嵌入式13届国赛题-CSDN博客

【蓝桥杯嵌入式】【复盘】第14届国赛真题-CSDN博客


以下是本篇博客正文内容:

2. 在cubemx中配置uart

cubemx中配置uart的接收和发送都很简单:

根据开发板手册,默认串口的tx和rx分别连接是PA10和PA9,所以,对于板子来说,PA10是rx,PA9是tx:

所以,在cubemx中,对对应的gpio做配置就行:

 

 核心要点如下:

1. 将PA9配置为USART_TX,PA10配置为USART_RX。

2. 将对应的串口1配置为异步模式,波特率为9600,同时打开串口接收中断。


3. uart发送

我的模板代码如下:

int fputc(int ch, FILE *f)
{HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, HAL_MAX_DELAY);return ch;
}

我比较喜欢用这种重定向的方式使用uart发送,这样的话,使用printf就可以在串口中打印对印度个内容。


4. uart接收

我的模板代码如下:

char rx_buf[2] = {0};
char dat;
uint8_t rx_ptr = 0;
void usart_init(void)
{dat = HAL_UART_Receive_IT(&huart1, (uint8_t *)&dat, 1);
}void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART1){rx_buf[rx_ptr++] = dat;dat = HAL_UART_Receive_IT(&huart1, (uint8_t *)&dat, 1);}
}

 串口接收的原理实际也不复杂,如我的模板代码书写的话,大致的流程就是串口每接受一个字节的数据就会进入串口中断,然后在串口中断中将接收到的数据存入rx_buf中以便后续的使用,然后再次使用HAL_UART_Receive_IT,类似于再次开启一次接收中断,因为默认在进入串口接收中断回调函数后会关闭该中断。

串口接收响应的处理逻辑放在task中进行:

void uart_task(void)
{if(rx_ptr > 0){uint8_t tmp = rx_ptr;HAL_Delay(1);if(tmp == rx_ptr){// 串口接收处理逻辑}}
}

注意,这里有一个通过延时判断接收是否完成的逻辑。 


5. uart不定长接收

 参考:# [蓝桥杯嵌入式]hal库 stm32 USART串口不定长收发通信(中断+计时)_hal串口接收-CSDN博客

不定长接收的cubemx配置部分没有什么变动,但是在接收逻辑上使用到了定时器的超时结束思想。

我的模板代码如下:

// 不定长接收
struct _uart_struct {char rx_buf[128];char rx_dat;uint8_t rx_ptr;bool rx_is_started;bool rx_is_ended;uint8_t rx_time;
};struct _uart_struct uart_struct;void usart_init(void)
{	HAL_UART_Receive_IT(&huart1, (uint8_t *)&uart_struct.rx_dat, 1);
}void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART1){if(uart_struct.rx_ptr >= 128){// 数据溢出uart_struct.rx_is_ended = 0;uart_struct.rx_is_started = 0;uart_struct.rx_ptr = 0;uart_struct.rx_time = 0;memset(uart_struct.rx_buf, 0, sizeof(uart_struct.rx_buf));}else{uart_struct.rx_buf[uart_struct.rx_ptr++] = uart_struct.rx_dat;uart_struct.rx_is_started = 1;uart_struct.rx_time = 0;uart_struct.rx_is_ended = 0;}HAL_UART_Receive_IT(&huart1, (uint8_t *)&uart_struct.rx_dat, 1);}
}void uart_task(void)
{if(uart_struct.rx_is_ended == 1){printf("不定长接收完成,rx_buf:%s\n", uart_struct.rx_buf);uart_struct.rx_is_ended = 0;uart_struct.rx_is_started = 0;uart_struct.rx_ptr = 0;uart_struct.rx_time = 0;memset(uart_struct.rx_buf, 0, sizeof(uart_struct.rx_buf));}
}// 这个函数需要放入1ms的定时器中断中,可以选择滴答定时器
void uart_tim(void)
{if(uart_struct.rx_is_started == 1){if(++uart_struct.rx_time >= 10){uart_struct.rx_is_ended = 1;uart_struct.rx_time = 0;uart_struct.rx_is_started = 0;}}
}

大致的思路是:

1. 初始化的时候,同样先开启接收中断;

2. 在接收中断中,接收字节数据,存入缓冲区;同时,将开始接收的标志位置1,重置接收计时器以及接收结束标志位;

3. 在1ms中断中,如果检测到开始接收的标志位置1了,便开始计时10ms,超过10ms后,强制接收完成,将接收完成标志位置1,重置开始接收标志位和接收计时器。

4. 在uart_task中,不断判断接收完成标志位,如果发现其置1,说明不定长接收完成了,开始处理对应的逻辑,最后将接收缓冲区相关的内容、接收计时器、接收开始和结束标志位全部重置,准备下一次的接收。


总结

本文主要介绍了uart相关操作的模板代码,主要是uart的cubemx配置、uart发送、uart接收、uart不定长接收。


文章转载自:

http://4ZxlbRwC.hLfrh.cn
http://arvbxOMX.hLfrh.cn
http://2RNOmxHU.hLfrh.cn
http://jqFTS8Yq.hLfrh.cn
http://qhW2iYXm.hLfrh.cn
http://QtrY0VA3.hLfrh.cn
http://4ApZGHfL.hLfrh.cn
http://953uwhFU.hLfrh.cn
http://jsARMBAJ.hLfrh.cn
http://JpM0DGzX.hLfrh.cn
http://lGT5cFJ8.hLfrh.cn
http://Mk1r8Bjc.hLfrh.cn
http://r9vgyU7D.hLfrh.cn
http://ncbgnHHk.hLfrh.cn
http://szjc6Ll2.hLfrh.cn
http://sJNq5fEk.hLfrh.cn
http://ZYkt9dQc.hLfrh.cn
http://6rHjEIlN.hLfrh.cn
http://d6VqqKVO.hLfrh.cn
http://ouBkBuJQ.hLfrh.cn
http://7YWACziw.hLfrh.cn
http://VGIalAds.hLfrh.cn
http://elZM2nbz.hLfrh.cn
http://vdpwV0l7.hLfrh.cn
http://gQzryZnr.hLfrh.cn
http://GUhrpjEo.hLfrh.cn
http://oOmxAQuV.hLfrh.cn
http://9P1lr4U6.hLfrh.cn
http://aTsgs16z.hLfrh.cn
http://PrPKmQOu.hLfrh.cn
http://www.dtcms.com/wzjs/742078.html

相关文章:

  • 网站建设过程有哪几个阶段站长工具是干嘛的
  • 网站备案免费吗普通电脑怎么做网站服务器吗
  • 电子商务网站建设与维护实训网络产品运营与推广
  • 做网页设计网站有哪些广告开户南京seo
  • 金华网站制作网站引导页怎么设置
  • 上海华谊集团建设有限公司网站网站建设seo优化浙江
  • 河南建设监理协会网站电话商城和营销型网站建设
  • 有帮忙做儿童房设计的网站吗资海网络一年做多少网站
  • 用html做网站的心得体会图书馆网站建设请示
  • 营销型网站建设团队网站后端做留言板功能
  • 企业网站建设规划的基本原则是什么公司网站建设的签订合同
  • 出国看病网站开发wordpress西班牙语
  • 东南亚网站建设市场小牛加速器
  • 中国网站制作企业排行榜做信息采集的网站
  • 做一下网站网站服装网站公司网站
  • 网站建设 招标文件秒拍wordpress插件
  • 甘肃省建设厅职业资格注册中心网站做网站比较便宜
  • 企业网站开发韵茵南宁建站官网
  • 网站服务合同模板友情链接检测的特点
  • 青岛定制网站建设连云港网站建设培训
  • 房屋产权地址备案在那个网站做网站建设培训心得
  • 建设银行社保网站网站建设尺寸
  • 钓鱼网站建设信息手机网站模板下载
  • 网站建设方案报价表汉滨网站建设
  • 大型网站开发管发建设网站意义
  • 建瓯市建设局网站怎么做html网站
  • 上海市住房和城乡建设厅网站查询wordpress博客可以下载官方的模板
  • 周口网站建设专家网站建设 蔬菜配送
  • 做采购 通常在什么网站看定制营销的优缺点
  • 网站 风格wordpress 活动 报名 插件