完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 07071624 于 2016-10-5 22:02 编辑
在下最近在做一个项目,需要用串口调试助手向板子发送如:112233445566778899AA(10对16进制数)的数字串。 想在串口3中断程序中得到CmdCode[0]=11,CmdCode[1]=22.……CmdCode[8]=99,CmdCode[9]=AA。 也就是说想把这112233445566778899AA(10对16进制数)的数字串分配到一个10个元素的数组中。 为了验证能否达到此目的,我将此10个元素中任意一个元素,如第7个元素USART_SendData(USART3,CmdCode[6]);发送到电脑,如“USART_SendData(USART3,CmdCode[6]);”, 结果发送上来的在串口调试助手中得到的是00000000000000000000,也就是说并没有将这一串16进制数分到每个数组的元素中。 我写的程序如下所示,我百思不得其解,请高手指点我一下。谢谢了 u8 CmdCode[10] ; void USART3_IRQHandler(void) { u8 CmdIndex;//i; if(USART_GetiTStatus(USART3, USART_IT_RXNE)==SET) { USART_ClearITPendingBit(USART3, USART_IT_RXNE); for(CmdIndex = 0;CmdIndex < 10;CmdIndex++) { CmdCode[CmdIndex] = USART_ReceiveData(USART3); } USART_SendData(USART3,CmdCode[6]);//我为了验证是否分配成功,把数组的任意一位元素发到串口中,看是否能成功 } if(USART_GetITStatus(USART3, USART_IT_TXE)==SET) { USART_ClearITPendingBit(USART3, USART_IT_TXE); } } |
|
相关推荐
13个回答
|
|
我顶啊,大家看看啊
|
|
|
|
void USART3_IRQHandler(void)这个函数是接收到一个字节就进入一次的
所以你在中断里边运行 for(CmdIndex = 0;CmdIndex < 10;CmdIndex++) { CmdCode[CmdIndex] = USART_ReceiveData(USART3); } 应该是不行的 |
|
|
|
谢谢你的指点,我就是想实现这个功能,你能指点我该怎么写这个程序吗 |
|
|
|
|
|
|
|
请问你弄好了吗,我现在也需要这样子 取数据,求教一下
|
|
|
|
|
|
|
|
|
|
学习啊 看起来不错
|
|
|
|
验证过了吗?目前也需要这段程序。
|
|
|
|
你好!我现在也遇到这个问题,可否指点一下。
|
|
|
|
请问这个问题是怎么解决的?
|
|
|
|
不能用for循环,串口传输需要时间,进入一次中断说明来了一个字节的数据,你用for循环想来一个字节数据的时候读完所有数据?这可能吗?
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1129 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1075 浏览 2 评论
2175 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1269 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1693 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 19:34 , Processed in 0.865670 second(s), Total 67, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号