Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
串口中断回调函数
10
串口中断发送,发送完成后回调函数,不回调!!!!
发布于 2023-05-29 16:13:04 浏览:212
订阅该版
新手一个,使用标准版3.15lts版本,串口中断发送,发送完成中断回调函数不能回调。造成串口不能继续发送数据。 ```c /*串口信号量及线程初始化*/ static rt_device_t uart1_dev; static struct rt_semaphore sem_uart1_rx; static struct rt_semaphore sem_uart1_tx; static rt_size_t rx_len = 0; /*发送循环队列*/ #define UART1_TXBUF_SIZE 128 static StructCirQue uart1_TxQue; /*串口1发送循环队列*/ static rt_uint8_t uart1_TxBuf[UART1_TXBUF_SIZE] = {0}; /*串口1发送缓冲区*/ /* 串口发送回调函数 */ static rt_err_t uart1_TxCallback(rt_device_t dev, void *size) { rt_sem_release(&sem_uart1_tx); /* Release the TX semaphore */ return RT_EOK; } /* 串口数据发送处理线程 */ static void uart1_Tx_thread_entry(void *parameter){ rt_size_t len = 0; //char buffer[64]= {0}; char ch[] = "hhh"; /*初始化发送循环队列*/ //InitQueue(&uart1_TxQue, uart1_TxBuf, UART1_TXBUF_SIZE); while(1){ /* 阻塞等待发送信号量,等到信号量后再次发送数据 */ rt_sem_take(&sem_uart1_tx, RT_WAITING_FOREVER); rt_device_write(uart1_dev, 0, ch, rt_strlen(ch)); /*判断循环队列中数据是否为空*/ //while(QueueLength(&uart1_TxQue) == 0); //{ /*从循环队列中取出数据到buffer*/ // len = DeQueue(&uart1_TxQue, (DATA_TYPE*)buffer, QueueLength(&uart1_TxQue)); /* 发送数据至串口DMA */ // len = rt_device_write(uart1_dev, 0, &buffer, len); /* 调试用,在串口打印出来*/ // rt_kprintf("len:%d\n",len); // } } } /* 初始化串口1 */ int bsp_usart1_init(void) { rt_err_t ret; struct serial_configure uart1_configs = \ { \ BAUD_RATE_19200, /* 19200 bits/s */ \ DATA_BITS_8, /* 8 databits */ \ STOP_BITS_1, /* 1 stopbit */ \ PARITY_NONE, /* No parity */ \ BIT_ORDER_LSB, /* LSB first sent */ \ NRZ_NORMAL, /* Normal mode */ \ RT_SERIAL_RB_BUFSZ, /* Buffer size */ \ 0 \ }; /*查找串口设备,获取句柄*/ uart1_dev = rt_device_find("uart1"); if (uart1_dev == RT_NULL) { LOG_E("rt_device_open[uart1] failed...\n"); return -EINVAL; } /* 打开串口设备 中断方式发送/DMA方式接收*/ ret = rt_device_open(uart1_dev, RT_DEVICE_FLAG_INT_TX); if (ret < 0) { LOG_E("rt_device_open[uart1]:%d failed...\n",ret); return ret; } /* 配置串口参数 */ ret = rt_device_control(uart1_dev, RT_DEVICE_CTRL_CONFIG, (void *)&uart1_configs); if (ret < 0) { LOG_E("rt_device_control[uart1] failed...\n"); return ret; } /* 设置发送回调函数 */ ret = rt_device_set_tx_complete(uart1_dev, uart1_TxCallback); if (ret < 0) { LOG_E("rt_device_set_tx_indicate[uart1] failed...\n"); return ret; } /* 创建发送与接收信号量 */ ret = rt_sem_init(&sem_uart1_tx,"sem_u1tx", 0, RT_IPC_FLAG_FIFO); if(ret < 0){ LOG_E("rt_sem_init failed[%d]...\n",ret); return ret; } ret = rt_sem_init(&sem_uart1_rx,"sem_u1rx", 0, RT_IPC_FLAG_FIFO); if(ret < 0){ LOG_E("rt_sem_init failed[%d]...\n",ret); return ret; } /*创建数据发送与接收线程*/ rt_thread_t thread = rt_thread_create("u1_tx",uart1_Tx_thread_entry, NULL, 1024, 10, 5); if (thread != RT_NULL){ rt_thread_startup(thread);} else{ LOG_E("rt_thread_create[uart1] failed...\n"); ret = RT_ERROR; } rt_device_write(uart1_dev, 0, "Uart1 config...\n", rt_strlen("Uart1 config...\n")); return RT_EOK; } ``` 
查看更多
1
个回答
默认排序
按发布时间排序
张世争
2023-05-30
学以致用
能软件调试吗?可以在串口接收中断加个断点。
撰写答案
登录
注册新账号
关注者
0
被浏览
212
关于作者
星云0
这家伙很懒,什么也没写!
提问
5
回答
1
被采纳
0
关注TA
发私信
相关问题
1
串口发送完成中断回调函数的使用
2
蓝牙通讯一直进入串口接收中断
3
为什么我这个程序size一直是1,接收一段数据只能读取到前面两个
4
急急急!!中断中调用rt_mb_send()函数出现的问题!!
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
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部