#include "stm32f0xx.h"
#include "stm32_lib/inc/stm32f0xx_rcc.h"
#include "stm32_lib/inc/stm32f0xx_gpio.h"
#include "stm32_lib/inc/stm32f0xx_usart.h"
#include "stm32_lib/inc/stm32f0xx_misc.h"
#include "delay.h"
int main(void)
{
//1、使能時鐘
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
//2、引腳選擇
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);
//3、引腳設置
GPIO_InitTypeDef PORT_UART1_TX;//定義TX腳,PORT_UART1_TX是自定義名稱,可以任意
PORT_UART1_TX.GPIO_Mode=GPIO_Mode_AF;
PORT_UART1_TX.GPIO_Pin=GPIO_Pin_9;//此參數根據上面選擇的引腳來定
//PORT_UART1_TX.GPIO_Speed=GPIO_Speed_10MHz;
PORT_UART1_TX.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_Init(GPIOA,&PORT_UART1_TX);
GPIO_InitTypeDef PORT_UART1_RX;//定義RX腳
PORT_UART1_RX.GPIO_Mode=GPIO_Mode_AF;
PORT_UART1_RX.GPIO_Pin=GPIO_Pin_10;//此參數根據上面選擇的引腳來定
//PORT_UART1_RX.GPIO_Speed=GPIO_Speed_10MHz;
PORT_UART1_RX.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_Init(GPIOA,&PORT_UART1_RX);
//4、串口參數配置
USART_InitTypeDef MyUsart1;//這個MyUsart1是我自定義的,可以任意定義如XYZ123
MyUsart1.USART_BaudRate=9600;//設置波特率
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;//設置模式
USART_Init(USART1,&MyUsart1);
//允許接收中斷RXNE和發送完成中斷TC
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
USART_ITConfig(USART1,USART_IT_TC,ENABLE);
//5、使能
USART_Cmd(USART1,ENABLE);
//6、中斷向量設置
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//設置中斷
NVIC_InitStructure.NVIC_IRQChannelPriority=0;//設置優先級
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能
NVIC_Init(&NVIC_InitStructure);
while(1){
}
}
//中斷函數
void USART1_IRQHandler(void){
unsigned char temp=0;
//如果是接收中斷
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){
temp=USART_ReceiveData(USART1);//讀完即自動清除RXNE
USART_SendData(USART1,temp);
//USART_ClearFlag(USART1,USART_FLAG_RXNE);
}
//如果是發送中斷
else
{
USART_ClearFlag(USART1,USART_FLAG_TC);
//......
}
}
上一篇:STM32F030C8T6 STM32F030R8T6 STM32F030 STOP低功耗模式配置
下一篇:stm32f030串口與flash讀寫一起使用時發生卡機現象
推薦閱讀
史海拾趣
設計資源 培訓 開發板 精華推薦
- 【搶樓】正式開始!來搶TI LM3S811評估板吧!!!
- LYTSwitch-1 LED驅動器 天生小體積,應用高效率,圍觀有好禮!
- 【搶樓有禮】聊聊vishay照明應用在我們身邊哪些地方!
- TI MCU 常見問題(FAQ)大搜集
- 你有原創,我有豪禮!(原創精選評選第7期)
- 與未來同行-是德科技創新技術峰會·北京
- 更好的你我,更好的EEWorld!2020年終慶典
- 下載MPS汽車電機控制技術干貨,贏【Keep體脂秤、自動洗手機套裝、小米保溫杯】,開啟汽車技術進階之旅!
- 【已結束】PI 直播【適合工業市場輔助電源的碳化硅和氮化鎵 IC】(9:30入場)
- BeagleBone Black 開發板 DIY 創意設計大賽