⽤STM32官⽅库⾃带的USART_SendData函数发送字符串
源代码
//USARTx 串⼝
//*string 字符串
//enter 回车
void send_Data(USART_TypeDef* USARTx, u8 *string, u8 enter)
{
do
{
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET);
USART_SendData(USARTx,*string);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=RESET);
字符串函数注册登录string++;
}
while(*string!='\n');
if(enter!=0)
{
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET);
USART_SendData(USARTx,'\n');
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=RESET);
}
}
函数分析
在官⽅⾃带的函数库中USART_SendData()只能发送单个字符,因此需要⾃⼰编写⼀个字符串的函数。
在我写的这个函数中有3个参数,第⼀个是串⼝号,第⼆个是要发送的字符串,第三个填0或1,⽤来决定是否在发送完毕后换⾏。
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET);⽤于等待串⼝空闲后开始传送数据,防⽌数据冲突导致的乱码。
同理可知while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=RESET);⽤于等待串⼝发送完成后再进⾏下⼀步。
在定义第⼆个参数时我们将字符串设为指针,将其设为指针是因为字符串在地址中每增加⼀位就代表着下⼀位字符。于是当我们要
⽤USART_SendData(USARTx,*string);发送数据时,得加上指针符号。当发送完⼀个字符时,字符串的地址+1,表⽰将准备发送的字符数据所对应的地址+1,即把待发送的字符数据改成下⼀位字符。
在这个函数中我将\n设为终⽌符,当string⾃加到\n所对应的地址时停⽌串⼝发送。因此函数不会发送换⾏符,我在此⽤第三个参数enter来决定是否在发送完成后⾃动换⾏,⽅便上位机上的显⽰。
若要在上位机中显⽰中⽂字符串,记得将上位机的编码设置为GBK。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论