STM32 串口发送数据

2015-5-18 二赛君 学习笔记

    用STM32开发,经常要用到上位机显示数据,用的较多的是串口调试助手。 STM32通过串口向上位机发送数据,可以是单字节,可以是字符串,也可以是数组。如果只调用USART_SendData();发现这个函数只能发送最大0*FF的数据。但没关系,我们可以把大于0*FF的数据分为高8位和低8位分别发送。这样计数值最高可达65535(0*FFFF)。所以要使用数组发送就是很必要的事情。

    在程序中需要自己定义一个函数。代码如下:

/*------------串口1 发送一个字符串-------------------
程序调用示例:
uchar  str[]="二赛君";  //定义一个 字符串  注意 字符串 是" " 
UART1_Send_Str(str);         //发送字符串
-----------------------------------------------------*/
//发送字符串 函数   应用指针 方法
void UART1_Send_Str(unsigned char *s)//发送字符串 函数   应用指针 方法
{
        unsigned char i=0;  //定义一个局部变量  用来 发送字符串 ++运算

        while(s[i]!='\0')  // 每个字符串结尾 都是以  \0 结尾的
        {
                USART_SendData(USART1,s[i]);        //通过库函数  发送数据
                while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);  
                //等待发送完成。   检测 USART_FLAG_TC 是否置1;    //见库函数 P359 介绍

                i++;                 //i++一次
        }

}

/*------------串口1 发送数组数据 循环发送一个数组上去-------------------
程序示例:
uchar Tx_Data[15];        //定义数组  范围是:Tx_Data[0]-Tx_Data[14] 

UART1_Send_Array(Tx_Data,6);  //发送数组前6位数据 Tx_Data[0]-Tx_Data[5]
UART1_Send_Array(Tx_Data,15); //发送数组所有数据 Tx_Data[0]-Tx_Data[14] 
------------------------------------------------------------------------*/
void UART1_Send_Array(unsigned char send_array[],unsigned char num) //两个参数 一是数组(的数据) 二是数组长度1-255 ,数组的类型可以更换
{
        //串口发送
        unsigned char i=0;  //定义一个局部变量  用来 发送字符串 ++运算


        while(i<num)   //i肯定小于num 是正确  就执行
        {
                
                USART_SendData(USART1,send_array[i]);        //通过库函数  发送数据
                while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);  
                //等待发送完成。   检测 USART_FLAG_TC 是否置1;    //见库函数 P359 介绍

                i++;  //值 加一         
        }
        
}
其中发送数组的方式还可以用指针实现,代码如下

void UART_Send_Array(USART_TypeDef* USARTx,u8 * send_array,unsigned char array_size)  
{
    
   unsigned char i=0;  

        while(i<array_size)   //i肯定小于num 是正确  就执行
        {      
                USART_SendData(USARTx,send_array[i++]);        //通过库函数  发送数据
                while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);//等待发送完毕 
        }
        
}
至此就可以完成串口的发送了!

标签: STM32 嵌入式 串口

发表评论:

Copyright 2011-2017 | Powered by emlog | Redesigned by Kaspar.s
京ICP备13003113号 sitemap