完善资料让更多小伙伴认识你,还能领取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); |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
672 浏览 0 评论
2954 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2344 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2810 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
30369 浏览 11 评论
72523 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 16:27 , Processed in 0.687655 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号