0目標1STM32串口簡介
2硬件設計3軟件設計
4下載驗證
0.目標
利用串口1不停的打印信息到電腦上,同時接收從串口發(fā)過來的數(shù)據(jù),把發(fā)送過來的數(shù)據(jù)直接送回給電腦。
1.STM32串口簡介
串口設置的一般步驟可以總結(jié)為如下幾個步驟:
1)串口時鐘使能,GPIO時鐘使能
2)串口復位
3) GPIO端口模式設置
4)串口參數(shù)初始化
5)開啟中斷并且初始化NVIC(如果需要開啟中斷才需要這個步驟)
6)使能串口
7)編寫中斷處理函數(shù)
注:對于復用功能的IO,我們首先要使能GPIO時鐘,然后使能復用功能時鐘,同時要把GPIO模式設置為復用功能對應的模式。
查看手冊《STM32 中文參考手冊 V10》P110 的表格“8.1.11 外設的 GPIO 配置:
2硬件設計
(1)LED0接PA0
(2)串口1
3.軟件設計
新建工程:
其中SYSTEM下放置原子哥提供的三個文件夾delay、sys、uart(及其文件),HARDWARE下建LED文件夾,及其內(nèi)建LED.C與LED.H文件。
uart中串口函數(shù):
voiduart_init(u32bound){
//GPIO端口設置
GPIO_InitTypeDefGPIO_InitStructure;
USART_InitTypeDefUSART_InitStructure;
NVIC_InitTypeDefNVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);//使能USART1,GPIOA時鐘
//USART1_TXPA.9
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//PA.9
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復用推挽輸出
GPIO_Init(GPIOA,&GPIO_InitStructure);
//USART1_RXPA.10
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空輸入
GPIO_Init(GPIOA,&GPIO_InitStructure);
//Usart1NVIC配置
NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//搶占優(yōu)先級3
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//子優(yōu)先級3
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能
NVIC_Init(&NVIC_InitStructure);//根據(jù)指定的參數(shù)初始化VIC寄存器
//USART初始化設置
USART_InitStructure.USART_BaudRate=bound;//一般設置為9600;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字長為8位數(shù)據(jù)格式
USART_InitStructure.USART_StopBits=USART_StopBits_1;//一個停止位
USART_InitStructure.USART_Parity=USART_Parity_No;//無奇偶校驗位
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//收發(fā)模式
USART_Init(USART1,&USART_InitStructure);//初始化串口
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//開啟中斷
USART_Cmd(USART1,ENABLE);//使能串口
}
LED.c內(nèi)容:
#include“l(fā)ed.h”
//初始化PA0為輸出口。并使能這個口的時鐘
//LEDIO初始化
voidLED_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PA端口時鐘
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//LED0--》PA0端口配置
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度為50MHz
GPIO_Init(GPIOA,&GPIO_InitStructure);//根據(jù)設定參數(shù)初始化GPIOA0
GPIO_SetBits(GPIOA,GPIO_Pin_0);//PA0輸出高
}
led.h:
#ifndef__LED_H
#define__LED_H
#include“sys.h”
#defineLED0PAout(0)//PA0
voidLED_Init(void);//初始化
#endif
主函數(shù):
#include“l(fā)ed.h”
#include“delay.h”
#include“sys.h”
#include“usart.h”
intmain(void)
{
u8t;
u8len;
u16times=0;
delay_init();//延時函數(shù)初始化
NVIC_Configuration();//設置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
uart_init(9600);//串口初始化為9600
LED_Init();//LED端口初始化
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3f;//得到此次接收到的數(shù)據(jù)長度
printf(“ 您發(fā)送的消息為: ”);
for(t=0;t
{
USART_SendData(USART1,USART_RX_BUF[t]);//向串口1發(fā)送數(shù)據(jù)
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發(fā)送結(jié)束
}
printf(“ ”);//插入換行
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf(“ 口袋里的超超 串口實驗 ”
上一篇:STM32時鐘要先倍頻N倍再分頻的原因是什么?
下一篇:STM32單片機的can總線的配置
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- LTC3119IFE 5V、500kHz 寬輸入穩(wěn)壓器的典型應用電路
- BPC292封裝的SPC58 C,E,G和N線的微型插座模塊
- FRDM-17C724EVB: Freedom套件 - MPC17C724, 0.4 A雙H橋
- LTC695-3.3 的典型應用 - 3.3V 微處理器監(jiān)控電路
- 使用 Analog Devices 的 LTC6263HMS 的參考設計
- FSA3000 兩端口高速 MHL 交換機的典型移動 MHL 應用
- LTC3633AIFE 1.5V 1MHz 雙相降壓穩(wěn)壓器的典型應用電路
- NCV33074ADR2G 運算放大器用作 LED 驅(qū)動器的典型應用
- 4463-915-PDK,用于 Si4463 915-MHz 射頻收發(fā)器的 EZRadio-PRO 無線開發(fā)套件
- CN0313
- "智能汽車芯片大戰(zhàn)升級:高通最新方案為何獲中國車企追捧?
- 電壓精度0.5% @25°C!思瑞浦發(fā)布全新車規(guī)并聯(lián)基準芯片TPR43xQ系列產(chǎn)品
- AI技術(shù)在方便面生產(chǎn)質(zhì)量監(jiān)控中的應用
- 潤石科技推出RS3215-Q1系列低壓差線性穩(wěn)壓器
- CANape 23開啟智能測試新時代(下)
- 軟件定義汽車電源管理設計:NXP的PMIC選型攻略解析
- 深度測評時空壺X1同聲傳譯器:全球最先進AI同傳設備的非凡實力
- 作為領先的垂直整合制造商(IDM),英飛凌在 300mm氮化鎵生產(chǎn)路線圖方面取得突破
- 鐵威馬F6-424 Max:六盤位擴容+國產(chǎn)系統(tǒng)兼容,小白也能玩轉(zhuǎn)NAS
- 開關(guān)電源給鉛酸電池恒流恒壓充電的電流跳動問題解析