完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void sndMsg(const char *buf , int count)
{ int iLoop; for(iLoop = 0 ; iLoop < count ; iLoop++) { while(RESET == USART_GetFlagStatus(USART1 , USART_FLAG_TXE)); USART_SendData(USART1 , buf[iLoop]); while(RESET == USART_GetFlagStatus(USART1 , USART_FLAG_TC)); //程序在这里死循环 } } FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG) { FlagStatus bitstatus = RESET; /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx)); assert_param(IS_USART_FLAG(USART_FLAG)); /* The CTS flag is not available for UART4 and UART5 */ if (USART_FLAG == USART_FLAG_CTS) { assert_param(IS_USART_1236_PERIPH(USARTx)); } if ((USARTx->SR USART_FLAG) != (uint16_t)RESET) //原因:SR寄存器值为0x80,TXE置位,但此时TC没有置位,移位寄存器数据没有发送完成 { bitstatus = SET; } else { bitstatus = RESET; } return bitstatus; } |
|
相关推荐
1个回答
|
|
在STM32F407中,USART(通用同步/异步接收/发送器)用于实现串行通信。TC(传输完成)是一个标志位,用于指示USART数据寄存器的传输是否完成。在您提供的代码片段中,您尝试通过一个循环发送一定数量的字符。但是,您没有提供完整的代码,因此我将提供一个完整的示例来说明如何使用USART发送数据并检查TC标志位。
首先,确保您已经正确配置了USART接口。以下是一些关键步骤: 1. 时钟使能:确保为USART接口使能了时钟。 2. GPIO配置:将用于USART通信的GPIO引脚配置为替代功能。 3. USART配置:配置USART的波特率、数据位、停止位等参数。 接下来,提供一个完整的发送函数示例: ```c #include "stm32f407xx.h" void USART_SendData(USART_TypeDef *USARTx, uint8_t *buf, int count) { int iLoop; for (iLoop = 0; iLoop < count; iLoop++) { // 等待数据发送完成 while (!(USARTx->SR & USART_SR_TXE)); // 发送数据 USARTx->DR = buf[iLoop]; } // 等待传输完成 while (!(USARTx->SR & USART_SR_TC)); } ``` 在这个示例中,我们首先检查USART_SR_TXE(传输寄存器空)标志位,以确保传输寄存器已经准备好接收新数据。然后,我们将数据写入USART_DR(数据寄存器)以发送数据。在循环结束后,我们再次检查USART_SR_TC(传输完成)标志位,以确保所有数据都已发送完毕。 请注意,这个示例使用了宏定义来访问寄存器,您需要根据实际使用的USART接口(例如USART1、USART2等)替换USART_TypeDef *USARTx。 如果您仍然遇到TC标志位无法置位的问题,请检查以下几点: 1. 确保您的USART配置正确,包括波特率、数据位、停止位等。 2. 确保GPIO引脚已正确配置为USART功能。 3. 检查您的串行通信目标设备是否已正确连接并正常工作。 希望这些信息能帮助您解决问题。如果您需要更多帮助,请提供更详细的代码和问题描述。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
652浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
522浏览 3评论
539浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
508浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 12:06 , Processed in 0.473809 second(s), Total 46, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号