簡(jiǎn)介
實(shí)現(xiàn)printf+scanf/gets通過USART1 的發(fā)送接收。
電路原理圖
板載USB CH340串口電路原理圖
主芯片串口引腳圖
我的板子板子自帶串口壞掉了, 所以使用USB轉(zhuǎn)TTL線, 連接如下
電路原理圖
實(shí)物圖
其他知識(shí)
scanf是以空白符(空格、制表符、換行等等)為結(jié)束標(biāo)志的,當(dāng)遇到空白符是就會(huì)結(jié)束一次輸入,如果你需要讀取空格的話可以使用gets或者getchar。
實(shí)現(xiàn)步驟
創(chuàng)建項(xiàng)目
參考 普中STM32-PZ6806L開發(fā)板(STM32CubeMX創(chuàng)建項(xiàng)目并點(diǎn)亮LED燈)
初始化USART1
其他的保持默認(rèn)就好
Keil 打開支持MicroLIB支持
不打開無法正常使用printf等標(biāo)準(zhǔn)庫
添加用戶代碼
main.c
#include "stdio.h"
#include "string.h"
// printf 等的底層調(diào)用函數(shù), 重定義之后printf將調(diào)用此函數(shù)進(jìn)行字符打印
int fputc(int ch, FILE *file)
{
uint8_t temp[1] = {ch};
HAL_UART_Transmit(&huart1, temp, 1, 0xffff);
return HAL_OK;
}
// scanf 等的底層調(diào)用函數(shù), 重定義后scanf將調(diào)用此函數(shù)獲取輸入數(shù)據(jù)
int fgetc(FILE *f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
return ch;
}
int main()
{
...
printf("Very Welcome!!!\r\n");
while (1)
{
memset(buf, 0, sizeof(buf)/sizeof(uint8_t)); // 內(nèi)存塊數(shù)據(jù)清零
gets("%s", buf); // 從串口獲取數(shù)據(jù)
printf("Recv: %s\r\n", buf); // 打印獲取到的數(shù)據(jù)
}
...
}
共賞
文章來源:http://www.zghlxwxcb.cn/news/detail-764937.html
參考
普中STM32-PZ6806L開發(fā)板(HAL庫函數(shù)實(shí)現(xiàn)-批量操作GPIO引腳實(shí)現(xiàn)跑馬燈)文章來源地址http://www.zghlxwxcb.cn/news/detail-764937.html
到了這里,關(guān)于普中STM32-PZ6806L開發(fā)板(HAL庫函數(shù)實(shí)現(xiàn)-USART1 printf+scanf/gets)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!