近期使用STM32驱动MAX3485进行485通信,发现STM32F103C8并不自带硬件485首发功能,需要软件上控制IO高低来驱动MAX3485进行485接收、485发送。
根据MAX3485手册可得,进行485发送时给相应引脚高电平。其余时间为低电平进行485接收。因此需要找到串口DMA发送完成的回调函数,在发送完成后将引脚拉低。
在stm32f1xx_hal_uart.c中
/** @defgroup UART_Exported_Functions_Group2 IO operation functions
* @brief UART Transmit and Receive functions
*
@verbatim
==============================================================================
##### IO operation functions #####
==============================================================================
[..]
This subsection provides a set of functions allowing to manage the UART asynchronous
and Half duplex data transfers.
(#) There are two modes of transfer:
(++) Blocking mode: The communication is performed in polling mode.
The HAL status of all data processing is returned by the same function
after finishing transfer.
(++) Non blocking mode: The communication is performed using Interrupts
or DMA, these APIs return the HAL status.
The end of the data processing will be indicated through the
dedicated UART IRQ when using Interrupt mode or the DMA IRQ when
using DMA mode.
The HAL_UART_TxCpltCallback(), HAL_UART_RxCpltCallback() user callbacks
will be executed respectively at the end of the transmit or receive process.
The HAL_UART_ErrorCallback() user callback will be executed when
a communication error is detected.
(#) Blocking mode APIs are:
(++) HAL_UART_Transmit()
(++) HAL_UART_Receive()
(#) Non Blocking mode APIs with Interrupt are:
(++) HAL_UART_Transmit_IT()
(++) HAL_UART_Receive_IT()
(++) HAL_UART_IRQHandler()
(#) Non Blocking mode functions with DMA are:
(++) HAL_UART_Transmit_DMA()
(++) HAL_UART_Receive_DMA()
(++) HAL_UART_DMAPause()
(++) HAL_UART_DMAResume()
(++) HAL_UART_DMAStop()
(#) A set of Transfer Complete Callbacks are provided in non blocking mode:
(++) HAL_UART_TxHalfCpltCallback()
(++) HAL_UART_TxCpltCallback()
(++) HAL_UART_RxHalfCpltCallback()
(++) HAL_UART_RxCpltCallback()
(++) HAL_UART_ErrorCallback()
[..]
(@) In the Half duplex communication, it is forbidden to run the transmit
and receive process in parallel, the UART state HAL_UART_STATE_BUSY_TX_RX
can't be useful.
可以看到 HAL_UART_TxCpltCallback() 的相关解释,发现其位发送完成的回调函数。
因此定义该函数后自行添加相关的代码即可完成。
上一篇:基于HAL库处理UART中断并接收串口传入的数据
下一篇:关于烈火四轴遥控器串口上传分析
推荐阅读
史海拾趣
E. Dold & Söhne KG公司始建于20世纪初,当时只是一间小型的电子手工作坊。创始人埃德蒙德·多尔德(Edmund Dold)凭借对电子技术的热爱和精湛的手艺,开始生产简单的电子元件。随着时间的推移,公司逐渐扩大规模,引进了先进的生产设备和制造工艺,逐步转型为现代化的电子元件制造商。在这个过程中,多尔德家族始终秉持着精益求精、追求卓越的精神,为公司的持续发展奠定了坚实的基础。
Echelon Corporation于1988年在美国加州成立,其初衷是开发和推广先进的通信和控制技术。在成立初期,Echelon便推出了其标志性的LonWorks控制网络平台。该平台采用了开放的通信协议,使得不同厂商的设备可以无缝连接和通信,为工业自动化、建筑自动化等领域带来了革命性的变化。LonWorks平台的成功推出,为Echelon在电子行业奠定了坚实的基础。
绿宝石公司始终坚持品质至上的原则,对每一道生产工序都进行严格把控。公司引进了先进的生产设备和检测仪器,确保产品质量的稳定性和可靠性。此外,公司还建立了完善的售后服务体系,及时解决客户在使用过程中遇到的问题。凭借卓越的产品品质和优质的服务,绿宝石公司赢得了客户的广泛信赖和好评。
为了进一步提升竞争力,C&H Technology积极寻求与其他企业的战略合作。公司与一家知名的手机制造商签订了长期合作协议,共同开发定制化芯片解决方案。同时,C&H Technology还与一家领先的半导体生产企业建立了战略联盟,共同研发新型半导体材料和生产工艺。这些战略合作不仅为公司带来了更多的商业机会,也提升了公司的技术水平和品牌影响力。
随着市场的不断变化和竞争的加剧,艾华集团意识到,要想在行业中立足并取得长远发展,必须走科技创新之路。于是,公司成立了多个研究院,专注于基础材料、产品、工业装备以及产品应用的研究。通过不断的科技创新和产品升级,艾华集团成功研发出了耐超高纹波和耐超强冲击电流的铝电容器技术,这一技术在市场上获得了广泛认可,赢得了飞利浦、欧司朗、GE等世界知名照明客户的青睐。
在电子行业的快速发展中,GradConn也面临着诸多挑战,如市场竞争加剧、技术更新换代加速等。然而,公司凭借敏锐的市场洞察力和持续的创新精神,不断克服这些挑战,实现了持续发展。GradConn不仅关注当前的市场需求,还积极预测未来的技术趋势,提前布局新产品研发。这种前瞻性的战略眼光使GradConn能够在激烈的市场竞争中保持领先地位,并持续为客户提供优质的产品和服务。
提供了一种每周波四点采样的最小二乘方滤波器,通过整型变换和查表求根等优化算法,可在单片机中实现相量的快速测量。分析了滤波器中相量的相位关系,并提供了两线制功率的计算方法。… 查看全部问答∨ |
那位大哥大姐有产生 白噪声信号,正弦波信号,脉冲信号,三角波,锯齿波的C/C++程序 本帖最后由 paulhyde 于 2014-9-15 09:14 编辑 内容同上,最好是完整的源代码程序,因为我是新手,小弟在次不胜感激啊! … 查看全部问答∨ |
我们大厦被投诉最多的是空调,几乎都是VAV。反应慢,可控性差,该出风时不出风,不该出风时狂出...... 最后害得技工不得不在电脑上控制几乎每个VAV,快把人累死。 其实最好的方式是在温控器上能直接控制风阀大小,不要什么VAV,什么PID.....其实 ...… 查看全部问答∨ |
|
能读进去,写却怎么也写不进去 使用的芯片是S3c2440+k9f1208 哪位帮我好好看看吧! 代码如下 /* NAND Flash registers 2440*/ #define NFCONF (*(volatile unsigned int *)0x4e000000) #define NFCONT (*(volatile u ...… 查看全部问答∨ |
1、高级动画特效编辑 2、嵌入式软件设计 3、MIS软件设计 4、2D与3D多媒体软件应用 5、软件产品开发 6、通信软件设计 以上职位要求: 1、本科学历或2年以上计算机专业学习证书 2、达到英语或法语工作水平 3、两年以上连续相关工作经历 签 ...… 查看全部问答∨ |
我在做一个HID USB设备的minidriver,USB设备总是循环的发送相同的数据,在以中断传输方式读取数据的时候,我不知道该采用怎么样的方式: 1. 根据Walter Oney,HID USB设备的hidMinidriverRegistration.DevicesArePolled ...… 查看全部问答∨ |
用wavecom模块开发时出现模块收不到数据现实怎么回事?我用PPP建六连接后,用UDP发数据,发到服务中心软件上,数据能收到可是服务中心软件回的数据,我的串口收不到,不知是模块收到没转到串口还是就没收到?? 用TCP也是这样,在TCP建立连接时,用抓包工具 ...… 查看全部问答∨ |
大家可以通过各种渠道拿到工具了,不知道有没有必要搞一个全国范围的技术讲座,围绕着软件,还有芯片的外围功能和调试技术,做一个入门级的培训。可以送一些书,,, 上海,深圳,北京 拿到工具的人希望讲 ...… 查看全部问答∨ |