STM32 串口發(fā)送數(shù)據(jù)(發(fā)送一個(gè)字節(jié),以及數(shù)組)
#include"usart1.h"
//#include //加載MDK 自帶的 C 函數(shù)D:KeilC51INC
//串口1 配置
void USART1_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定義結(jié)構(gòu)體
// 結(jié)構(gòu)體內(nèi)容在stm32f10x_gpio.h101行//見庫函數(shù) P125頁
USART_InitTypeDef USART_InitStructure;//定義結(jié)構(gòu)體
// 結(jié)構(gòu)體內(nèi)容在stm32f10x_usart.h76行//庫函數(shù)的348頁
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);
//打開時(shí)鐘
//初始化GPIO 見庫函數(shù) P125頁
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//要設(shè)置的PIN
//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//復(fù)用推挽輸出
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口
// 結(jié)構(gòu)體內(nèi)容在stm32f10x_usart.h76行//庫函數(shù)的348頁
USART_InitStructure.USART_BaudRate=9600;//設(shè)定波特率
USART_InitStructure.USART_WordLength=USART_WordLength_8b;//8位數(shù)據(jù)
USART_InitStructure.USART_StopBits=USART_StopBits_1;//停止位1位
USART_InitStructure.USART_Parity=USART_Parity_No;//無校驗(yàn)位
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//無硬件控制 CTS RTS
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//發(fā)送接收 使能
USART_Init(USART1,&USART_InitStructure); //配置USART1
USART_Cmd(USART1,ENABLE); //使能 串口1
}
void USART1_Send_Byte(unsigned char byte)//串口發(fā)送一個(gè)字節(jié)
{
USART_SendData(USART1, byte);//通過庫函數(shù)發(fā)送數(shù)據(jù)
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
//等待發(fā)送完成。檢測(cè) USART_FLAG_TC 是否置1;//見庫函數(shù) P359 介紹
}
//發(fā)送字符串 函數(shù)應(yīng)用指針 方法
void UART1_Send_Str(unsigned char *s)//發(fā)送字符串 函數(shù)應(yīng)用指針 方法
{
unsigned char i=0;//定義一個(gè)局部變量用來 發(fā)送字符串 ++運(yùn)算
while(s[i]!='')// 每個(gè)字符串結(jié)尾 都是以結(jié)尾的
{
USART_SendData(USART1,s[i]);//通過庫函數(shù)發(fā)送數(shù)據(jù)
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
//等待發(fā)送完成。檢測(cè) USART_FLAG_TC 是否置1;//見庫函數(shù) P359 介紹
i++;//i++一次
}
}
void UART1_Send_Array(unsigned char send_array[],unsigned char num) //兩個(gè)參數(shù) 一是數(shù)組(的數(shù)據(jù)) 二是數(shù)組長(zhǎng)度1-255
{
//串口發(fā)送
unsigned char i=0;//定義一個(gè)局部變量用來 發(fā)送字符串 ++運(yùn)算
while(i
{
USART_SendData(USART1,send_array[i]);//通過庫函數(shù)發(fā)送數(shù)據(jù)
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
//等待發(fā)送完成。檢測(cè) USART_FLAG_TC 是否置1;//見庫函數(shù) P359 介紹
i++;//值 加一
}
}