完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
|
|
相关推荐
1个回答
|
|
|
目的
UART(异步串口)是单片机非常常用的一个功能,一般用作设备或模块间通讯的一种方式。通常所说的232或是485通讯从写程序的角度来说就是使用UART进行通讯。(这个地方有些人会混淆,串口更多是一种通讯方式、机制,而TTL、232、485更多的是电气相关特性) HAL库使用UART非常简单,LL库相对来说会稍微麻烦一点点。HAL库设计了三套数据首发了模式,你可以选择其中一套使用,这对新手来说上手可以非常快,但现实情况中这三套模式其实不是那么实用的,你如果想要在此基础上做些改变就会麻烦。UART中使用LL库相对来说是个更好的选择,这篇文章先讲下LL库中使用UART的基本操作。 基础说明与初始化 基础说明 STM32系列MCU大多都有多个UART可以使用,每个UART可以设置独立的参数,和其它设备通讯时通讯的双方必须有相同的参数。一般会涉及的参数如下:
使用STM32CubeIDE或STM32CubeMX来初始化UART的话我们一般只要根据需求设置基本参数、中断、DMA即可,如下图所示: 使用中如果需要更改相关参数的话可以直接按照软件生成的初始化程序来,也可以使用LL库中提供的修改单独参数的方法:
数据接收和发送 HAL库中UART的数据接收和发送设计了轮询、中断、DMA三种方式来使用,这篇文章中将介绍下LL库中这三种基础的使用方式。 轮询方式 如果只是要测试串口收发数据的话,轮询方式不管是配置还是使用都是最简单的,先看下面演示: 上面演示中软件配置中只是使能了USART1,将其设置成异步模式,然后将相关的库设置为LL库,其它的都没改,在生成的程序中在主循环中添加了少量代码就实现了将收到的数据回传的功能。其中涉及的方法如下:
上面的轮询方式在实际项目中通常使用率不是那么高,中断的方式更加常用些,先看下面演示: 上面演示中除了软件自动生成的代码手动添加的代码只有开启中断已经中断回调函数中的操作,新涉及的方法如下:
DMA方式 和中断方式相比使用DMA方式使用频率就更高了,先看下面演示:
用LL库来使用UART相比HAL库也并没有复杂太多,不过和HAL库对于各种芯片有着较好兼容性不同的是LL库对于各种芯片的兼容性不怎么好,比如STM32F4系列的芯片中DMA涉及Stream,而STM32F1系列芯片的DMA并没有Stream却有Channel,两者代码上无法直接套用。 事实上这篇文章中的各个演示只是介绍了下LL库中UART的基本使用方法,实际项目中通常不会这么用,更常见的使用方法将在后面的文章中介绍。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
1599 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4738 浏览 0 评论
4229 浏览 9 评论
3822 浏览 16 评论
4398 浏览 1 评论
4212浏览 3评论
2381浏览 0评论
3394浏览 0评论
1159浏览 0评论
2844浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 10:41 , Processed in 0.659852 second(s), Total 45, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2674