初级会员

- 积分
- 51
- 金钱
- 51
- 注册时间
- 2018-9-27
- 在线时间
- 12 小时
|
发表于 2018-9-29 10:09:49
|
显示全部楼层
你的发送函数有问题!你的for循环跟它底下的符合语句根本就存在矛盾。 你的while 循环根本就只会执行一次知道不,甚至可能一次都执行不到,因为你发送标志位根本没有清除呀,例程没好好看呦!
给你两个发送函数吧,你自己看看就知道了:
/*发送单个字节数据*/
void Uart_SendChar( USART_TypeDef* USARTx , u16 data)
{
USART_SendData(USARTx,data);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC) != SET);
//ClearWatchDog();
USART_ClearFlag(USARTx,USART_FLAG_TC);
}
/*发送一串字节数据--数组、字符串*/
void Uart_transmit( USART_TypeDef* USARTx , u8 *data , u16 Len)
{
u16 i;
//RS485_TX_EN=1;
for(i=0 ; i<Len ; i++)
{
USART_SendData(USARTx,data[i]);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC) != SET);
//ClearWatchDog();
USART_ClearFlag(USARTx,USART_FLAG_TC);
}
//RS485_TX_EN=0;
} |
|