hal 雙串口同時接收丟失數據_【STM32Cube_06】使用USART發送和接收數據(查詢模式)...

76536d063f4ac43870d060b57056c9d4.png

尋求更簡潔舒適的閱讀體驗,請移步Mculover666的個人博客:

【STM32Cube_06】使用USART發送和接收數據(查詢模式)?www.mculover666.cn

本篇文章主要介紹如何使用STM32CubeMX初始化STM32L431RCT6的USART,并使用查詢模式發送數據,使用查詢模式接收數據。


1. 準備工作

硬件準備

  • 開發板 首先需要準備一個開發板,這里我準備的是STM32L4的開發板(BearPi):

7157c1df717315399db5032a3e6366b3.png

軟件準備

  • 需要安裝好Keil - MDK及芯片對應的包,以便編譯和下載生成的代碼;
  • 準備一個串口調試助手,這里我使用的是Serial Port Utility
Keil MDK和串口助手Serial Port Utility 的安裝包都可以在文末關注公眾號獲取,回復關鍵字獲取相應的安裝包:

835b1263d73bd4f6ca71bc6ac285bfef.png

2.生成MDK工程

選擇芯片型號

打開STM32CubeMX,打開MCU選擇器:

0d3463fe7d31b7969d7626f377f1e99c.png

搜索并選中芯片STM32L431RCT6:

f50e5c6b94ab08a53905ac0f04bf6891.png

配置時鐘源

  • 如果選擇使用外部高速時鐘(HSE),則需要在System Core中配置RCC;
  • 如果使用默認內部時鐘(HSI),這一步可以略過;

這里我都使用外部時鐘:

b3c1f4f989871878d493ea92d41f71c2.png

配置串口

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

7359e86606f04be049f25760353ea75e.png

這里我將開關撥到AT-MCU模式,使PC的串口與USART1之間連接。

接下來開始配置USART1

819d31c7cab0efc1030932c5c2f5dca4.png

配置時鐘樹

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

fda0ce17723f4c03b0f63785578afcd9.png

e8276464b19815bb661daf3c43793c25.png

生成工程設置

36ea4b28a023e1b265360d913748d182.png

代碼生成設置

最后設置生成獨立的初始化文件:

9ae7e8609d08055834482f54ebb6080f.png

生成代碼

點擊GENERATE CODE即可生成MDK-V5工程:

b9e7d977f6d43cad174233ab02a0d06b.png

3. 在MDK中編寫、編譯、下載用戶代碼

編寫查詢模式發送和接收代碼

編寫 main 函數如下:

int main(void)
{/* USER CODE BEGIN 1 */char str[12] = "Hello Worldn";char recv_buf[12] = {0};/* USER CODE END 1 */HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Transmit(&huart1, (uint8_t*)str, 12, 0xFFFF);/* USER CODE END 2 */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 *///接收12個字節的數據,不超時if(HAL_OK == HAL_UART_Receive(&huart1, (uint8_t*)recv_buf, 12, 0xFFFF)){//將接收到的數據發送HAL_UART_Transmit(&huart1, (uint8_t*)recv_buf, 12, 0xFFFF);}}/* USER CODE END 3 */
}

編譯代碼

編譯整個工程:

b9d1c0ccad51a117defa2129f127c7f1.png

設置下載器

1d26417a28582fdfeb0ef60eb90a5917.png

e91a45483297a3fdcda5e74202d7311e.png

實驗現象

下載運行后,實驗現象如下:

cac917b39f55b752c516d76cfd99d968.png

至此,我們已經學會了如何配置USART使用查詢模式發送和接收數據,下一節將講述如何配置USART使用中斷模式接收數據。

更多精彩文章及資源,請關注我的微信公眾號:『mculover666』。

e62a4f546b5bc1cf1d25be0cc8f42a82.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529272.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java接口+Java支持多繼承嗎?

java接口Java支持多繼承嗎? 1.接口使用interface(接口)關鍵字修飾 2.接口中的方法默認都是全局抽象方法,即默認public abstract修飾 3.接口不能直接new對象,必須通過new子類創建對象(多態向上轉型&#xff…

stm32滴答計時器_STM32的系統滴答定時器(Systick)

1.systick時鐘來源2.SysTick庫函數3.源碼/***}*//** defgroup SysTick_clock_source*{*/#define SysTick_CLKSource_HCLK_Div8 ((uint32_t)0xFFFFFFFB)#define SysTick_CLKSource_HCLK ((uint32_t)0x00000004)#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) Sy…

Java包裝類與基本數據類型的自動 手動裝箱與自動 手動拆箱

Java包裝類與基本數據類型的自動 手動裝箱與自動 手動拆箱 **自動裝箱與拆箱**,實現代碼如下: /*** 裝箱 : 基本數據類型-----> 包裝類* 拆箱: 包裝類-------> 基本數據類型* author **/ public class Test1 {public sta…

什么叫冷備用狀態_新密5P加工中心冷油機生產廠家電話【瀚信德】

新密5P加工中心冷油機生產廠家電話【瀚信德】以上如有異常,請盡快通知分司派維修人員處理。油冷機的工作原理有什么油冷機也叫冷油機,根據制冷系統原理,低溫低壓的液態冷媒在蒸發器里面與周圍水進行熱交換蒸發器吸收油的熱量,蒸發…

java 雙等號(==) 與equals方法的介紹和區別

java 雙等號() 與equals方法的介紹和區別 1.基本數據類型與equals方法 用于比較基本數據類型時,比較的是值用于比較引用數據類型時,比較的是地址equals方法在Object類中比較的也是地址,因為在低層也是使用進行比較St…

verilog時鐘翻轉怎么寫_verilog實時可調時鐘代碼

module clock(clk,out,reset,cin,ocom,count,countmin,tgm,tdm,tgs,tds);output[3:0] ocom;output[7:0] out;output count,countmin;input cin,clk,reset;input tgm;//高位的分input tdm;//地位的分input tgs;//高位的秒input tds;//地位的秒reg [7:0] out_s;reg[7:0] out_min;…

Java ArrayList與LinkedList數據結構和特點

Java ArrayList與LinkedList數據結構和特點 1. ArrayList 數據結構: ArrayList低層是實現的是一個Object類型的數組(空間連續,類型相同)當我們調用ArrayList無參構造方法,將會創建一個Object類型的**空**數組當我們第…

多線程 循環 鎖_大多數人還不清楚的iOS多線程

你不知道的的 iOS 多線程程序員用有限的生命去追求無限的知識。有言在先首先我不是故意要做標題黨的,也不是我要炒冷飯,我只是想換個姿勢看多線程,本文大部分內容在分析如何造死鎖,奈何功力尚淺,然而再淺,也…

Java HashMap與Hashtable數據結構和特點+HashSet簡述

Java HashMap與Hashtable數據結構和特點HashSet簡述 1.HashMap HashMap就是基于數組和鏈表的數據結構:JDK1.7使用 數組單向鏈表;JDK1.8使用 數組單向鏈表紅黑樹 HashMap有兩個重要的參數: 一個是負載因子 0.75:表示數組使用率達…

aj6 stamps storm_親友限定的 AJ 6 要發了?3 月好鞋發售清單 for girls

原標題:親友限定的 AJ 6 要發了?3 月好鞋發售清單 for girls🌸🌸🌸Air Jordan 1 Low Slip “Chicago”Color:Varsity Red/Black/WhiteStyle Code:BQ8462-601Price:$110adidas WMNS U…

學校為什么要單位接收函_學校、小區運動場為什么要選擇塑膠跑道

隨著人們生活水平的不斷提高,科技的日新月異,各行各業都向著更加健康環保安全舒適的方向邁進。就拿小區、學校的運動場所地坪為例,傳統的“沙土跑道”已經被運動塑膠跑道所替代。那么運動場為什么會選擇塑膠跑道呢? 塑膠跑道又稱全…

java中常見的專業術語單詞縮寫,看你認識幾個

java中常見的專業術語單詞縮寫,看你認識幾個 單詞全稱單詞縮寫中文意思備注Garbage CollectionGC垃圾回收Object Oriented ProgrammingOOP面向對象程序設計Document Object ModelDOM文檔對象模型Browser Object ModelBOM游覽器對象模型uniform resource locatorurl…

pitstop插件使用說明_【學員分享】程序員效率神器,最常用VIM插件安裝大全

相信大家多次被推薦用vim作為編輯程序,知道vim編輯有很多優點,但是vim初始界面太原始了,安裝了之后只能用來編輯,如果要運行就需要退出去運行,麻煩死了。回想用現成的IDE是多么的舒服。但是為了更好的學習,…

JVM思維導圖、正則表達式符號圖、企業內部開發流程圖

JVM思維導圖、正則表達式符號圖、企業內部開發流程圖 1.JVM思維導圖: 2.正則表達式符號圖: 3.企業內部開發流程圖:

蕭縣機器人_全國總決賽第一名!蕭縣楊樓的這位學生厲害了

 提示:點擊上方"蕭縣關注"↑免費訂閱本刊點擊上方關注我們,免費訂閱更多精彩內容&…

關于JSP頁面無法加載css,游覽器訪問jsp頁面樣式未生效導致亂序

關于JSP頁面無法加載css,游覽器訪問jsp頁面樣式未生效導致亂序 1.修改自己過濾器中對編碼格式的修改 如圖: 代碼如下: public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOE…

將視圖轉為image_JavaScript二進制數組(2)TypedArray視圖

ArrayBuffer對象作為內存區域可以存放多種類型的數據。同一段內存,不同數據有不同的解讀方式,這種解讀方式稱為“視圖(view)”。ArrayBuffer有兩種類型的視圖,一種是類型化數組視圖(TypedArray)…

八大基本數據類型、數組和包裝類默認值

八大基本數據類型、數組和包裝類默認值 1.八大基本數據類型 Java八種基本數據類型總結序號數據類型大小/字節封裝類默認值可表示數據范圍1byte1Byte0-128~1272short2Short0-32768~327673int4Integer0-2147483648~21474836474long8Long0-9223372036854775808~9223372036854775…

解決IDEA中maven工程的jsp、jstl依賴導入了 ,但是 jsp頁面的uri卻不提示(手動輸上也報紅)

解決IDEA中maven工程的jsp、jstl依賴導入了 ,但是 jsp頁面的uri卻不提示(手動輸上也報紅) 出現原因:idea內有緩存 解決辦法:File --> Invalidate Caches / Restart… --> lnvalidate and Restart idea版本&#…

空格 過濾多個_CAD選擇過濾器的運算符如何使用?

選擇過濾器FILTER在CAD早期版本中是擴展工具的一個功能,到了高版本變成標配的功能,但在浩辰CAD的菜單或工具面板中我還找到選擇過濾器的命令。浩辰CAD面板、右鍵菜單和特性面板倒是都提供了快速選擇的功能,快速選擇功能應該是借鑒選擇過濾器開…