STM32 串口发送数据(发送一个字节,以及数组)
扫描二维码
随时随地手机看文章
#include"usart1.h"
//#include //加载MDK 自带的 C 函数D:KeilC51INC
//串口1 配置
void USART1_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体
// 结构体内容在stm32f10x_gpio.h101行//见库函数 P125页
USART_InitTypeDef USART_InitStructure;//定义结构体
// 结构体内容在stm32f10x_usart.h76行//库函数的348页
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);
//打开时钟
//初始化GPIO 见库函数 P125页
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//要设置的PIN
//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//输出速度
GPIO_Init(GPIOA,&GPIO_InitStructure);//配置 IO
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//RX 接收引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入模式
GPIO_Init(GPIOA, &GPIO_InitStructure);//配置IO口
// 结构体内容在stm32f10x_usart.h76行//库函数的348页
USART_InitStructure.USART_BaudRate=9600;//设定波特率
USART_InitStructure.USART_WordLength=USART_WordLength_8b;//8位数据
USART_InitStructure.USART_StopBits=USART_StopBits_1;//停止位1位
USART_InitStructure.USART_Parity=USART_Parity_No;//无校验位
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//无硬件控制 CTS RTS
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//发送接收 使能
USART_Init(USART1,&USART_InitStructure); //配置USART1
USART_Cmd(USART1,ENABLE); //使能 串口1
}
void USART1_Send_Byte(unsigned char byte)//串口发送一个字节
{
USART_SendData(USART1, byte);//通过库函数发送数据
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
//等待发送完成。检测 USART_FLAG_TC 是否置1;//见库函数 P359 介绍
}
//发送字符串 函数应用指针 方法
void UART1_Send_Str(unsigned char *s)//发送字符串 函数应用指针 方法
{
unsigned char i=0;//定义一个局部变量用来 发送字符串 ++运算
while(s[i]!='')// 每个字符串结尾 都是以结尾的
{
USART_SendData(USART1,s[i]);//通过库函数发送数据
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
//等待发送完成。检测 USART_FLAG_TC 是否置1;//见库函数 P359 介绍
i++;//i++一次
}
}
void UART1_Send_Array(unsigned char send_array[],unsigned char num) //两个参数 一是数组(的数据) 二是数组长度1-255
{
//串口发送
unsigned char i=0;//定义一个局部变量用来 发送字符串 ++运算
while(i
{
USART_SendData(USART1,send_array[i]);//通过库函数发送数据
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
//等待发送完成。检测 USART_FLAG_TC 是否置1;//见库函数 P359 介绍
i++;//值 加一
}
}