完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
芯片:STM32F429ZGT6 线程信息: cmd_tx_thread = rt_thread_create("cmd_tx_thread", cmd_tx_thread_entry, &cmd_tx_thread, 1024, 6, 30); cmd_rx_thread = rt_thread_create("cmd_rx_thread", cmd_rx_thread_entry, &cmd_rx_thread, 1024, 6, 50); TQ_thread = rt_thread_create("TQ_thread", TQ_thread_entry, RT_NULL, 4096, 6, 30); YY_thread = rt_thread_create("YY_thread", YY_thread_entry, RT_NULL, 4096, 6, 30); YY_X_thread = rt_thread_create("YY_X_thread", YY_X_thread_entry, RT_NULL, 4096, 6, 30); YY_Z_thread = rt_thread_create("YY_Z_thread", YY_Z_thread_entry, RT_NULL, 4096, 6, 30); YY_Y_thread = rt_thread_create("YY_Y_thread", YY_Y_thread_entry, RT_NULL, 4096, 6, 30); YY_P_thread = rt_thread_create("YY_P_thread", YY_P_thread_entry, RT_NULL, 4096, 6, 30); TQ_X_thread = rt_thread_create("TQ_X_thread", TQ_X_thread_entry, RT_NULL, 4096, 6, 30); TQ_Z_thread = rt_thread_create("TQ_Z_thread", TQ_Z_thread_entry, RT_NULL, 4096, 6, 30); TQ_Y_thread = rt_thread_create("TQ_Y_thread", TQ_Y_thread_entry, RT_NULL, 4096, 6, 30); heat_timer = rt_thread_create("heat_timer", heat_timer_entry, RT_NULL, 512, 6, 30); heat_thread = rt_thread_create("heat_thread", heat_thread_entry, RT_NULL, 1024, 6, 30); 内核堆栈信息 #define RT_HEAP_SIZE 1024 *32 static uint32_t rt_heap[RT_HEAP_SIZE] /* __at(0x10000000)*/; // heap default size: 4K(1024 * 4) 还有一些其他的线程,就在详细列出: 指令数据都是定长16位; 所有线程优先级相同; 线程将指令处理完以后,通过 void send_ack(uint8_t data_buf[16]) { data_buf[14] = XorVerify(data_buf, 1, 13); //HAL_UART_Transmit(&cmd_com, data_buf, CMD_LENGTH,100); rt_mq_send(cmd_tx_mq, data_buf, CMD_LENGTH); } 唤醒指令返回线程,发送返回数据给上位机 void cmd_tx_thread_entry(void *parameter) { rt_err_t uwRet; //rt_uint32_t recved; uint8_t cmd_tx[16]; while (1) { /* 从消息队列中接收要返回的数据信息 */ uwRet = rt_mq_recv(cmd_tx_mq, cmd_tx, CMD_LENGTH, RT_WAITING_FOREVER); if (uwRet == RT_EOK) { //rt_enter_critical(); HAL_UART_Transmit(&cmd_com, cmd_tx, CMD_LENGTH, 200); //rt_exit_critical(); rt_thread_mdelay(5); } } } 现在遇到的问题是: 设备运行一段时间后,通过串口监控发现,通过cmd_tx_thread线程返回的数据出现断帧现象;并且此时,上位机再发送指令给主控板,下位机不再响应; MDK仿真,给指令串口打断点,发现也没有响应串口接收中断。thread.org/ask/question/215d47c484a7eae2.html |
|
相关推荐
3个回答
|
|
HAL_UART_Transmit,这个HAL 的超时使用的systick是否正常。(多线程的串口操作,建议用串口设备驱动)
调试时出现这种情况,断下来,看程序卡在位置。 |
|
|
|
HAL_UART_Transmit,我改成中断发送,发送没有再出现断帧现象,但是仍然会出现系统运行一段时间后,串口无法接收的现象
|
|
|
|
串口通信,还是建议使用串口设备驱动框架开发。串口接收怎么接收的呢?中断?DMA?串口溢出中断等,标志要清楚,一旦接收异常,整个通信链路就卡住了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
786 浏览 0 评论
4210 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2520 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2926 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31442 浏览 11 评论
72894 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:00 , Processed in 0.670236 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号