完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这段程序我想发数组里面的字符 就是接不到第一个字符。
unsigned char temp[7]="ABCDEFG"; int main(void) { u8 t; u8 len; u16 times=0; STM32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化为9600 LED_Init(); //初始化与LED连接的硬件接口 //LCD_Init(); delay_ms(10); //USART1->DR=temp[0]; // while((USART1->SR&0X40)==0);//等待发送结束 for(t=0;t<7;t++) { USART1->DR=temp[t]; while((USART1->SR&0X40)==0);//等待发送结束 } |
|
相关推荐
12个回答
|
|
for(t=0;t<7;t++)
{ USART1->DR=temp[t]; while((USART1->SR&0X40)==0);//等待发送结束 } 修改为: for(t=0;t<7;t++) { while((USART1->SR&0X40)==0);//等待发送结束 USART1->DR=temp[t]; } |
|
|
|
这算是 错误??
|
|
|
|
为什么啊 原子哥?
|
|
|
|
这样理论是不少发一个字符吗?
|
|
|
|
你试过了么?
|
|
|
|
好使 我上午其实也好使了。我是在FOR外面加一句发送结束,你改这个也对,只不过是不理解 不是每个字符都得经过判断发送是否完成来结束吗, 理论上改的少一个字符啊
|
|
|
|
因为DR里面可能存在其他不确定的数据,先让里面的数据发送完,然后再写,可以确保不产生丢数据的问题.
|
|
|
|
for(t=0;t<7;t++)
{ while((USART1->SR&0X40)==0);//等待发送结束 USART1->DR=temp[t]; } while((USART1->SR&0X40)==0);//等待发送结束 这句是先把不确害的数据发完,然后写是这句USART1->DR=temp[t]; 那是不是得下次T=1的时候才发temp[0]呢? 这样不是少发一个吗? 麻烦你了我整不懂我闹心啊。 |
|
|
|
"这句是先把不确害的数据发完,然后写是这句USART1->DR=temp[t];
那是不是得下次T=1的时候才发temp[0]呢? 这样不是少发一个吗?" 写入DR后就开始自动发送了, 少发一个是啥意思?不理解, 不知楼主是否看过参考手册里 USART1->SR 中 0X40 对应那一位的定义? |
|
|
|
自己***仿真即可.
|
|
|
|
谢谢原子哥
|
|
|
|
对应TC啊。懂了 谢谢啦,原来它是自动发送的啊! 少发一字符的意思是 等于1发第1个,等于6发第六个,等于七不少发一个吗 我以前这以理解的 不对。
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 10:39 , Processed in 0.996092 second(s), Total 99, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号