STM32 串口發送數據(發送一個字節,以及數組)
時間 2020-07-10
標籤
stm32
stm
串口
發送
數據
一個
字節
以及
數組
STM32 串口發送數據(發送一個字節,以及數組)
- #include"usart1.h"
- //#include //加載MDK 自帶的 C 函數 D:\Keil\C51\INC
-
- //串口1 配置
- void USART1_Config(void)
- {
-
- GPIO_InitTypeDef GPIO_InitStructure; //定義結構體
- // 結構體內容在stm32f10x_gpio.h 101行 // 見庫函數 P125頁
-
- USART_InitTypeDef USART_InitStructure; //定義結構體
- // 結構體內容在stm32f10x_usart.h 76行 // 庫函數的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.h 76行 // 庫函數的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]!='\0') // 每一個字符串結尾 都是以 \0 結尾的
- {
- 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++; //值 加一
- }
-
- }