Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
串口中断回调函数
串口发送完成中断回调函数的使用
发布于 2020-09-16 10:33:56 浏览:2290
订阅该版
 在上述图片中,红色方框所标注问题,此处只进行判断接收的标志位,而在uart_isr函数中没有对发送完成的相关标志位进行判断,那么如何实现串口的发送完成中断的处理?  这个图片就是void rt_hw_serial_isr(struct rt_serial_device *serial, int event)函数中的DMA模式相对应的代码。红色方框所标之处就是调用的串口发送完成中断回调函数,那么如果不是在DMA模式下,就是在中断模式下进行发送数据,那这个发送中断回调函数又是在哪里被执行的?
查看更多
文武斌
2020-11-12
这家伙很懒,什么也没写!
可以改成下面这样 ``` /* UART in mode Receiver -------------------------------------------------*/ if ((__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_RXNE) != RESET) && (__HAL_UART_GET_IT_SOURCE(&(uart->handle), UART_IT_RXNE) != RESET)) { rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); } #ifdef RT_SERIAL_USING_DMA else if ((uart->uart_dma_flag) && (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_IDLE) != RESET) && (__HAL_UART_GET_IT_SOURCE(&(uart->handle), UART_IT_IDLE) != RESET)) { level = rt_hw_interrupt_disable(); recv_total_index = serial->config.bufsz - __HAL_DMA_GET_COUNTER(&(uart->dma_rx.handle)); recv_len = recv_total_index - uart->dma_rx.last_index; uart->dma_rx.last_index = recv_total_index; rt_hw_interrupt_enable(level); if (recv_len) { rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_DMADONE | (recv_len << 8)); } __HAL_UART_CLEAR_IDLEFLAG(&uart->handle); } #endif else if (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_TC) && (__HAL_UART_GET_IT_SOURCE(&(uart->handle), UART_IT_TC) != RESET)) { #ifdef RT_SERIAL_USING_DMA if ((serial->parent.open_flag & RT_DEVICE_FLAG_DMA_TX) != 0) { HAL_UART_IRQHandler(&(uart->handle)); } #endif if ((serial->parent.open_flag & RT_DEVICE_FLAG_INT_TX) != 0) { rt_hw_serial_isr(serial, RT_SERIAL_EVENT_TX_DONE); } UART_INSTANCE_CLEAR_FUNCTION(&(uart->handle), UART_FLAG_TC); } else ..... ```
3
个回答
默认排序
按发布时间排序
wqwang
2020-09-17
这家伙很懒,什么也没写!
好像没有调用的,似乎只能用DMA,也没有普通的发送中断
rainz
2020-09-17
这家伙很懒,什么也没写!
看一下HAL_UART_TxCpltCallback这个函数有相应的处理
撰写答案
登录
注册新账号
关注者
2
被浏览
2.3k
关于作者
ZBXY_7941
这家伙很懒,什么也没写!
提问
6
回答
35
被采纳
4
关注TA
发私信
相关问题
1
蓝牙通讯一直进入串口接收中断
2
为什么我这个程序size一直是1,接收一段数据只能读取到前面两个
3
急急急!!中断中调用rt_mb_send()函数出现的问题!!
4
串口中断发送,发送完成后回调函数,不回调!!!!
5
RT_ASSERT报错
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
ulog组件多端绑定的demo案例
2
记录rt-thread消息队列的调试方法
3
AT32的ADC使用
4
aht10 终端:The aht10 is under an abnormal status
5
github高阶加速,速度可达带宽峰值,测试到146Mbit/s
热门标签
RT-Thread Studio
串口
LWIP
Env
AT
SPI
Bootloader
FinSH
ART-Pi
CAN总线
Hardfault
USB
文件系统
RT-Thread
DMA
SCons
线程
MQTT
RT-Thread Nano
STM32
RTC
rt-smart
ESP8266
flash
ota在线升级
WIZnet_W5500
FAL
I2C
packages_软件包
UART
cubemx
freemodbus
潘多拉开发板_Pandora
定时器
BSP
PWM
ADC
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
SDIO
Debug
AB32VG1
MicroPython
编译报错
C++_cpp
msh
ulog
QEMU
本月问答贡献
出出啊
1501
个答案
338
次被采纳
小小李sunny
1390
个答案
276
次被采纳
张世争
715
个答案
157
次被采纳
crystal266
522
个答案
153
次被采纳
whj467467222
1216
个答案
146
次被采纳
本月文章贡献
出出啊
1
篇文章
12
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
2
篇文章
2
次点赞
crystal266
2
篇文章
5
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部