完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
描述:用DMA发送消息接收问题描述到接收过程 中回复我的发送过程中,邮件接收线程中解析数据并回复。 整个数据没有响应问题,大概是6ms。但ProfibusDP响应要求达到2ms。我有什么办法可以改进响应速度吗? // 接收接收函数函数 rt_err_t uart2_dma_callback(rt_device_t_dev_dma_callback(rt_device_t_dev_dma_callback(rt_size_t size) { /* 发送到数据后重新生成调用函数,然后接收信号函数 */ struct msg; rt_err_t 结果; msg.dev =开发; msg.size = 大小; 结果 = rt_mq_send(&profidp_rx_mq, &msg, sizeof(msg)); if ( result == -RT_EFULL) { /* 消息满 */ rt_kprintf("消息队列已满!n"); } 返回结果; } /****************************************************** ******************************* * @fn serial_parathreadentry(void * * 线程_ 无 * ************************ ****************************************************** *****/ static void serial_thread_entry(void *parameter) { struct rx_msg msg; rt_mutex_t profidp_send_mx = RT_NULL;//互斥信号量 rt_err_t结果; rt_uint16_t rx_length; //静态 rt_uint8_t rx_buffer[RT_SERIAL_RB_BUFSZ + 1]; profidp_send_mx = rt_mutex_create ("profidp_send_mx", RT_IPC_FLAG_FIFO); 而(1) { rt_kprintf("serial_thread_entry tick 为 %ldrn", rt_tick_get()); rt_pin_write(RS485_RX_TX_EN, PIN_LOW); rt_memset(&msg, 0, sizeof(msg)); profibus_watchdog_proc(); /* 从消息中读取消息*/ result = rt_mq_recv(&profidp_rx_mq, &msg, size msg), RT_WAITING_NO/*RT_WAITING_FOREVER*/); if (result == RT == RT_串口读取数据 * / rlength = rt_device_read(msg.dev, 0, m_rtUsart2RxBuf, msg.size); if (rx_length >= 6 && rx_length < PROFIDP_RX_BUF_LEN) { //rx_buffer[rx_length] = ' |