完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
看老代码发现的bug。修改波特率的时候,先关闭串口设备,然后再打开,打开的时候多加了一个RT_DEVICE_FLAG_DMA_TX,此时,rt_device_write(env_dev, 0, string, strlen(string));这样最基础的发送函数都发不出来。 struct serial_configure pconfig; tmp_baud = (tmp_baud == 1)?2:1; 很奇怪,env_dev是串口3,也没有和别的DMA有冲突啊,就算有冲突也可以仲裁啊。谢谢 补充一下发送的内容 //数组是全局变量 |
|
相关推荐
1个回答
|
|
|
modify = SERIAL_MODIFY_STOP_BIT | SERIAL_MODIFY_PARITY;
serial_configure(env_dev, &pconfig); /* 打开串口 */ rt_device_open(env_dev, RT_DEVICE_FLAG_DMA_TX | RT_DEVICE_FLAG_INT_RX); 在修改波特率时,代码如下: struct serial_configure pconfig; pconfig.baud_rate = new_baud_rate; pconfig.data_bits = DATA_BITS_8; pconfig.stop_bits = STOP_BITS_1; pconfig.parity = PARITY_NONE; pconfig.bit_modify = SERIAL_MODIFY_BAUD_RATE; /* 关闭串口 */ rt_device_close(env_dev); /* 修改波特率 */ serial_configure(env_dev, &pconfig); /* 打开串口 */ rt_device_open(env_dev, RT_DEVICE_FLAG_DMA_TX | RT_DEVICE_FLAG_INT_RX); 可以看到,在打开串口设备的时候,多加了一个RT_DEVICE_FLAG_DMA_TX,这就导致了在使用DMA发送数据时出现问题。要解决这个问题,只需要把RT_DEVICE_FLAG_DMA_TX去掉即可。应该修改为: rt_device_open(env_dev, RT_DEVICE_FLAG_INT_RX); |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1033 浏览 0 评论
2877 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9386 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2898 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2302 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:28 , Processed in 0.512185 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2230