完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
int main(void)
{ #ifdef DEBUG debug(); #endif /* System clocks configuration ---------------------------------------------*/ RCC_Configuration(); /* NVIC configuration ------------------------------------------------------*/ NVIC_Configuration(); /* GPIO configuration ------------------------------------------------------*/ GPIO_Configuration(); /* USARTconfiguration ------------------------------------------------------*/ USART_Configuration(); while(1) { USART_SendData(USART1,0x01); //--------> 串口工具中接收到的数据又为0xE0 while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){} } } 端口配置都已经正常,在while里给PC机发送0x01,用串口工具接收到的数据为0xE0,不知道为什么发送和接收到的数据不一致,求各位帮忙. 然后自己查看了USART_SendData()和USART_GetFlagStatus函数: 库中的源代码为: void USART_SendData(USART_TypeDef* USARTx, u16 Data) { /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_USART_DATA(Data)); /* Transmit Data */ USARTx->DR = (Data & (u16)0x01FF); } FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG) { FlagStatus bitstatus = RESET; /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_USART_FLAG(USART_FLAG)); assert_param(IS_USART_PERIPH_FLAG(USARTx, USART_FLAG)); /* The CTS flag is not available for UART4 and UART5 */ if ((USARTx->SR & USART_FLAG) != (u16)RESET) { bitstatus = SET; } else { bitstatus = RESET; } return bitstatus; } while(1) { USART_SendData(USART1,0x02); //0x01改为0x02 --------> 串口工具中接收到的数据又为0xE1 while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){} } while(1) { USART_SendData(USART1,0x03); //0x01改为0x03 --------> 串口工具中接收到的数据又为0xE1 while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){} } 然后试了下把发给PC机的数据0x01改为数据0x02,串口工具中接收到的数据又为0xE1,然后把0x01再改为0x03,串口工具中接收到数据也为0xE1,求助,帮忙看下,为什么发送和接收的数据不一致? |
|
相关推荐
26个回答
|
|
|
试试PC 和MCU 的波特率对不对 如果波特率不对 那样的会出现乱码 还有就是 时钟的问题 103 和107的时钟 系统时钟是对的 但是外部时钟不对 一个8M 一个是25MHZ
|
|
|
|
|
|
start文件不对107用自己的
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
回复第 3 楼 于2011-03-31 09:04:25发表:
出现你这现象我也碰到过,但是我用的是485通信的,就是因为外部设备没有我们STM32的运行速度快,所以在485发送和接收的部分要加上适当延时. 你在发送完后的 while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){} 在后面加个软件延时就可以了. 加了个延时 解决问题了 谢谢 |
|
|
|
|
|
|
|
|
|
|
|
综合公司,旗下经营的家用除湿机、民用除湿机、工业除湿机、转轮除湿机、超声波加湿机、湿膜加湿机、恒温恒湿机、防磁柜、档案消毒柜、防潮箱等。产品已广泛用于别墅、住宅、纺织、印刷、卷烟、微电子企业、档案室、电信、电力、塑料、木业、纸业与行业车间、仓库等直接进行温湿度调节控制,空气净化,节能环保.电子元器件事业部主要销售“非挥发性存储产品”EEPROM,NOR Flash和电源管理芯片,主要代理FMD等品牌。
QQ1807798230 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 23:53 , Processed in 0.853402 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
7887