1. 準(zhǔn)備工作
硬件準(zhǔn)備
首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是STM32L4的開發(fā)板(BearPi):

軟件準(zhǔn)備
- 需要安裝好Keil - MDK及芯片對應(yīng)的包,以便編譯和下載生成的代碼;
- 準(zhǔn)備一個串口調(diào)試助手,這里我使用的是
Serial Port Utility ;
2.生成MDK工程 — 初始化GPIO為輸入
選擇芯片型號
打開STM32CubeMX,打開MCU選擇器:

搜索并選中芯片STM32L431RCT6 :

配置時鐘源
- 如果選擇使用外部高速時鐘(HSE),則需要在System Core中配置RCC;
- 如果使用默認(rèn)內(nèi)部時鐘(HSI),這一步可以略過;
這里我都使用外部時鐘:

配置串口
小熊派開發(fā)板板載ST-Link并且虛擬了一個串口,原理圖如下:


接下來開始配置USART1 :
-
串口基本參數(shù)配置:

-
用戶常量配置(不用配置)
-
NVIC配置(不用配置)
-
DMA配置(不用配置)
-
串口GPIO配置(默認(rèn)即可)

配置時鐘樹
STM32L4的最高主頻到80M,所以配置PLL,最后使HCLK = 80Mhz即可:


生成工程設(shè)置

代碼生成設(shè)置
最后設(shè)置生成獨(dú)立的初始化文件:

生成代碼
點(diǎn)擊GENERATE CODE 即可生成MDK-V5工程:

3. 在MDK中編寫、編譯、下載用戶代碼
測試發(fā)送
因?yàn)槲覀兣渲玫臅r候沒有使用中斷,所以接下來我們直接使用HAL庫的函數(shù)發(fā)送即可:
編寫main函數(shù):
int main(void)
{
char str[1] = {0};
HAL_Init();
SystemClock_Config();
MX_USART1_UART_Init();
HAL_UART_Transmit(&huart1, (uint8_t*)str, 12, 0xFFFF);
while (1)
{
/* 最大輸入10個字節(jié) */
if(HAL_OK == HAL_UART_Receive(&huart1,(uint8_t*)recv_buf,10,0xFFFF))
{
HAL_UART_Transmit(&huart1, (uint8_t*)recv_buf, 10, 0xFFFF);
}
}
}
然后編譯整個工程:

最后進(jìn)行下載設(shè)置:


最后點(diǎn)擊下載即可:

實(shí)驗(yàn)現(xiàn)象如下:

來源:https://www./content-4-329651.html
|