0目標(biāo)1STM32串口簡(jiǎn)介
2硬件設(shè)計(jì)3軟件設(shè)計(jì)
4下載驗(yàn)證
0.目標(biāo)
利用串口1不停的打印信息到電腦上,同時(shí)接收從串口發(fā)過(guò)來(lái)的數(shù)據(jù),把發(fā)送過(guò)來(lái)的數(shù)據(jù)直接送回給電腦。
1.STM32串口簡(jiǎn)介
串口設(shè)置的一般步驟可以總結(jié)為如下幾個(gè)步驟:
1)串口時(shí)鐘使能,GPIO時(shí)鐘使能
2)串口復(fù)位
3) GPIO端口模式設(shè)置
4)串口參數(shù)初始化
5)開啟中斷并且初始化NVIC(如果需要開啟中斷才需要這個(gè)步驟)
6)使能串口
7)編寫中斷處理函數(shù)
注:對(duì)于復(fù)用功能的IO,我們首先要使能GPIO時(shí)鐘,然后使能復(fù)用功能時(shí)鐘,同時(shí)要把GPIO模式設(shè)置為復(fù)用功能對(duì)應(yīng)的模式。
查看手冊(cè)《STM32 中文參考手冊(cè) V10》P110 的表格“8.1.11 外設(shè)的 GPIO 配置:
2硬件設(shè)計(jì)
(1)LED0接PA0
(2)串口1
3.軟件設(shè)計(jì)
新建工程:
其中SYSTEM下放置原子哥提供的三個(gè)文件夾delay、sys、uart(及其文件),HARDWARE下建LED文件夾,及其內(nèi)建LED.C與LED.H文件。
uart中串口函數(shù):
voiduart_init(u32bound){
//GPIO端口設(shè)置
GPIO_InitTypeDefGPIO_InitStructure;
USART_InitTypeDefUSART_InitStructure;
NVIC_InitTypeDefNVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);//使能USART1,GPIOA時(shí)鐘
//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;//復(fù)用推挽輸出
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)先級(jí)3
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//子優(yōu)先級(jí)3
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能
NVIC_Init(&NVIC_InitStructure);//根據(jù)指定的參數(shù)初始化VIC寄存器
//USART初始化設(shè)置
USART_InitStructure.USART_BaudRate=bound;//一般設(shè)置為9600;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字長(zhǎng)為8位數(shù)據(jù)格式
USART_InitStructure.USART_StopBits=USART_StopBits_1;//一個(gè)停止位
USART_InitStructure.USART_Parity=USART_Parity_No;//無(wú)奇偶校驗(yàn)位
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//無(wú)硬件數(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為輸出口。并使能這個(gè)口的時(shí)鐘
//LEDIO初始化
voidLED_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PA端口時(shí)鐘
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è)定參數(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í)函數(shù)初始化
NVIC_Configuration();//設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
uart_init(9600);//串口初始化為9600
LED_Init();//LED端口初始化
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3f;//得到此次接收到的數(shù)據(jù)長(zhǎng)度
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(“ 口袋里的超超 串口實(shí)驗(yàn) ”
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無(wú)刷直流電機(jī)驅(qū)動(dòng)器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動(dòng)授時(shí)的無(wú)線智能控制器的設(shè)計(jì)
- 基于PTR2000的無(wú)線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無(wú)人飛行器機(jī)載穩(wěn)定云臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- LTC2975 的典型應(yīng)用 - 具有準(zhǔn)確輸入電流和能量測(cè)量功能的 4 通道 PMBU 電源系統(tǒng)管理器
- STM32 Nucleo-64 開發(fā)板,帶 STM32WB15CC,支持 Arduino、ST Morpho 連接
- 使用 Analog Devices 的 LT1302CN8-5 的參考設(shè)計(jì)
- MC33364臨界導(dǎo)通模式反激轉(zhuǎn)換器的典型應(yīng)用電路
- AD9754-EB,用于 AD9754、14 位、125 MSPS 高性能 D/A 轉(zhuǎn)換器的評(píng)估板
- LTC1064-3,優(yōu)于用于數(shù)據(jù)通信的貝塞爾線性相位濾波器
- NCS2001SN2T1G 0.9V單電源運(yùn)放正電容乘法器典型應(yīng)用電路
- AM6TW-4803DH35Z ±3.3V 6 瓦雙路輸出 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- 使用 Analog Devices 的 LTC1538IG-AUX 的參考設(shè)計(jì)
- DC1198B-B,使用 LTM4607EV、6 至 36 Vin 至 12V、5A 高效降壓-升壓 DC/DC 模塊穩(wěn)壓器的演示板
- 關(guān)于動(dòng)力電池月度數(shù)據(jù)的一些分析
- HAL庫(kù)的官方歷程
- 【STM32】串口喚醒低功耗
- Omdia:2025 年 mini LED 電視出貨量將到 2500 萬(wàn)臺(tái)
- 英特爾Raja Koduri:賦能元宇宙
- tiny4412學(xué)習(xí)(四)之移植linux-設(shè)備樹(1)設(shè)備樹基礎(chǔ)知識(shí)及GPIO中斷
- 生物毒性測(cè)試儀如何選擇
- 金百澤科技亮相中國(guó)國(guó)際醫(yī)療器械博覽會(huì) | 盡顯醫(yī)療領(lǐng)域硬實(shí)力
- AT89C52單片機(jī)點(diǎn)亮數(shù)碼管的設(shè)計(jì)
- 自動(dòng)駕駛L2與L3有什么區(qū)別?為什么車企不提L3?
- 為什么城市NOA離不開激光雷達(dá)?
- 吉利的“神盾金磚電池”有什么技術(shù)亮點(diǎn)?
- 讓靈感掙脫技術(shù)枷鎖,英特爾攜手D5打造高效AI創(chuàng)作體驗(yàn)
- 中科曙光與海光信息宣布戰(zhàn)略重組
- 317.95億元!海外占比28%!4月電池新能源投資擴(kuò)產(chǎn)項(xiàng)目大盤點(diǎn)
- 現(xiàn)代汽車啟動(dòng)AI充電機(jī)器人ACR測(cè)試,仁川機(jī)場(chǎng)先行
- 從BEV感知到端到端自動(dòng)駕駛
- 高效價(jià)值被關(guān)注,大圓柱電池又風(fēng)生水起
- 吉利電池安全標(biāo)準(zhǔn)升級(jí),“神盾金磚電池”有什么技術(shù)亮點(diǎn)?
- vivo Y70s搭載了6.53 英寸 FHD+ 星眸屏幕售價(jià)確認(rèn),1998元起步
- iQOO Z1預(yù)售變相降價(jià)200元
- 專注于內(nèi)存安全,安芯網(wǎng)盾完成數(shù)千萬(wàn)元pre-A輪融資
- 江蘇5G產(chǎn)業(yè)聯(lián)盟投資促專委會(huì)成立
- LG Chem開始向和美國(guó)通用的電池合資企業(yè)注資
- 宏達(dá)電子一季度營(yíng)收同比增逾三成 軍品市場(chǎng)進(jìn)入增長(zhǎng)期
- 格力儲(chǔ)備資金投向新產(chǎn)業(yè) 新玩家紛紛入局集成電路
- 中國(guó)今年財(cái)政已安排近百億資金聚焦集成電路和新材料等
- 臺(tái)積電南京晶圓廠交付首批16nm芯片:客戶為比特大陸
- 英特爾大小核處理器 Lakefield,CPU 強(qiáng)大,但 GPU 效能恐成弱項(xiàng)
- F28377D的樣例 SOC_EPWM的的問題
- 哪位買過(guò)瑞薩 R7F0C80212的MCU啊,能否給個(gè)聯(lián)系方式?
- 小bug一枚
- msp430休眠后有時(shí)無(wú)法喚醒,請(qǐng)教高手
- 大家一起討論一下,下面這樣對(duì)LED驅(qū)動(dòng)有影響嗎?
- 我的第一篇博文
- ARM和PC用TCP/IP相連的IP設(shè)置問題
- 驅(qū)動(dòng)LED恒流IC_MY9221
- arm還是x86?未來(lái)在工業(yè)SBC數(shù)字誰(shuí)可以脫穎而出
- 有人想要msp430開發(fā)板的么 ,自己焊接的,低價(jià)出