#include "stm32f0xx.h"
#include "stm32_lib/inc/stm32f0xx_rcc.h"
#include "stm32_lib/inc/stm32f0xx_gpio.h"
#include "stm32_lib/inc/stm32f0xx_usart.h"
int main(void)
{
//1、使能時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
//特別注意:因為串口有使用GPIO,所以對應GPIO的時鐘也要使能
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
//2、選擇引腳
//TX有PA2和PA9可選,RX有PA3和PA10可選
//GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1);
//GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);//為什么是AF1,而不是AF0呢?見下圖,數據手冊才是準確的
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);
//3、引腳設置
GPIO_InitTypeDef PORT_UART1_TX;//定義TX腳,PORT_UART1_TX是自定義名稱,可以任意
PORT_UART1_TX.GPIO_Pin=GPIO_Pin_9;//此參數根據上面選擇的引腳來定
PORT_UART1_TX.GPIO_Speed=GPIO_Speed_10MHz;
PORT_UART1_TX.GPIO_Mode=GPIO_Mode_AF;
PORT_UART1_TX.GPIO_PuPd=GPIO_PuPd_NOPULL;
//IO初始化
//第一個參數是系統的GPIOA、GPIOB、GPIOC等
//第二個參數是&+上面自定義的名稱PORT_UART1_TX
GPIO_Init(GPIOA,&PORT_UART1_TX);
GPIO_InitTypeDef PORT_UART1_RX;//定義RX腳
PORT_UART1_RX.GPIO_Pin=GPIO_Pin_10;//此參數根據上面選擇的引腳來定
PORT_UART1_RX.GPIO_Speed=GPIO_Speed_10MHz;
PORT_UART1_RX.GPIO_Mode=GPIO_Mode_AF;
PORT_UART1_RX.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA,&PORT_UART1_RX);
//4、串口參數配置
USART_InitTypeDef MyUsart1;//這個MyUsart1是我自定義的,可以任意定義如XYZ123
MyUsart1.USART_BaudRate=115200;//設置波特率
MyUsart1.USART_WordLength=USART_WordLength_8b;//設置數據長度
MyUsart1.USART_Parity=USART_Parity_No;//設置奇偶校驗
MyUsart1.USART_StopBits=USART_StopBits_1;//設置停止位
MyUsart1.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//設置流控制
MyUsart1.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//設置模式
//初始化
//第一個參數是系統的USART1、USART2、USART3等
//第二個參數就是&+上面自定義的量MyUsart1
USART_Init(USART1,&MyUsart1);
//5、使能
USART_Cmd(USART1,ENABLE);
//6、接收和發送,通過查詢標志位
while(1){
while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)!=1);//等待接收
USART_ClearFlag(USART1,USART_FLAG_RXNE);//清楚接收完成標志位
USART_SendData(USART1,USART_ReceiveData(USART1));//接收什么,發送什么
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=1);//等待發送完成
USART_ClearFlag(USART1,USART_FLAG_TXE);//清楚發送完成標志位
}
}
上一篇:STM32入門學習之GPIO(STM32F030F4P6基于CooCox IDE)
下一篇:STM32入門學習之GPIO(STM32F030F4P6基于CooCox IDE)(一)
推薦閱讀
史海拾趣