7/1 uart

?uart4.c

#include "uart4.h"//UART4_RX ====> PB2
//UART4_TX ====> PG11char rebuf[51] = {0};
//rcc/gpio/uart4初始化
void hal_uart4_init()
{/********RCC章節初始化*******///1.使能GPIOB組控制器 MP_AHB4ENSETR[1] = 1RCC->MP_AHB4ENSETR |= (0x1 << 1);//2.使能GPIOG組控制器  MP_AHB4ENSETR[6] = 1RCC->MP_AHB4ENSETR |= (0x6 << 1);//3.使能UART4組控制器  MP_AHB4ENSETR[16] = 1	RCC->MP_AHB4ENSETR |= (0x1 << 16);/********GPIO章節初始化*******///1.將PB2和PG11設為復用功能模式GPIOB->MODER &= (~(0x3 << 4));//PB2GPIOB->MODER |= (0x2 << 4);GPIOG->MODER &= (~(0x3 << 22));//PG11GPIOG->MODER |= (0x2 << 22);//2.設置PB2和PG11引腳復用的功能GPIOB->AFRL &= (~(0xF << 8));//PB2GPIOB->AFRL |= (0x8 << 8);GPIOB->AFRH &= (~(0xF << 12));//PG11GPIOB->AFRH |= (0x6 << 12);/********UART章節初始化*******///1.設置初始化相關操作USART4->CR1 &= (~(0x1 << 12));USART4->CR1 &= (~(0x1 << 28));//設置8位數據位USART4->CR1 &= (~(0x1 << 15));//設置16倍采樣率USART4->CR1 &= (~(0x1 << 10));//設置無校驗位USART4->CR1 |= (0x1 << 3);//設置無發送位使能USART4->CR1 |= (0x1 << 2);//設置接收位使能USART4->CR1 |= 0x1;//設置串口使能//2.設置停止位USART4->CR2 &= (~(0x3 << 12));//設置串口位停止位//3.設置串口分頻USART4->PRESC &= (~(0xF));//4.設置串口波特率USART4->BRR |= 0x22B;}//發送一個字符
void hal_put_char(const char str)
{//判斷發送寄存器是否為空while(!(USART4->ISR) & (0x1 << 7)){USART4->TDR = str;}//判斷是否發送完畢while(!(USART4->ISR) & (0x1 << 6)){return;	}}//發送一個字符串
void hal_put_string(const char* string)
{while(*string){hal_put_char(*string++);}hal_put_char('\n');hal_put_char('\r');
}//接收一個字符
char hal_get_char()
{char str = 0;//判斷是否接收到數據while(!(USART4->ISR) &(0x1 << 5)){str = USART4->RDR;}return str;
}//接收一個字符串
char* hal_get_string()
{int i;for(i = 0;i < 50;i++){rebuf[i] = hal_get_char();hal_put_char(rebuf[i]);//判斷是否接收完畢if(rebuf[i] == '\r'){break;}}rebuf[i] = '\0';hal_put_char('\n');hal_put_char('\r');return rebuf;}

uart4.h

#ifndef __UART4_H__
#define __UART4_H__#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_uart.h"//rcc/gpio/uart4初始化
void hal_uart4_init();//發送一個字符
void hal_put_char(const char str);//發送一個字符串
void hal_put_string(const char* string);//接收一個字符
char hal_get_char();//接收一個字符串
char* hal_get_string();#endif

main.c

#include "uart4.h"int main(){//串口初始化hal_uart4_init();//char str;char *string;while(1){//串口讀取字符//str = hal_get_char();//將字符+1并發回去//hal_put_char(str+1);//串口讀取字符串string = hal_get_string();//將字符串發回去hal_put_string(string);}return 0;}

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

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

相關文章

【C++11:右值引用,列表初始化】

統一列表初始化&#xff1a; 構造函數的函數名與函數體之間增加一個列表&#xff0c;用于對成員初始化 在實例化對象時&#xff0c;支持單/多參數的隱式轉化&#xff0c;同時也可以省略符號&#xff0c;讓代碼更簡潔 右值的引用 左值&#xff1a; 左值與右值的重要區別就是能…

全國產化飛騰模塊BIOS下修復系統啟動文件

1、背景介紹 全國產飛騰模塊采用麒麟信安操作系統&#xff0c;當系統下面的grub.cfg文件被用戶誤操作導致無法啟動時&#xff0c;可以在BIOS下通過U盤中備份的grub.cfg替換硬盤上原來的grub.cfg文件&#xff0c;從而實現啟動。 2、操作步驟 首先進入BIOS命令行模式&#xff…

Meta低頭,庫克認錯,XR回歸第一性原理

圖片&#xff5c;Photo by Maxim Hopman on Unsplash ©自象限原創 作者丨羅輯 2024年&#xff0c;XR的故事應該怎么講&#xff1f; 如果從數據上看&#xff0c;這應該是個沉重的話題。 根據 IDC 報告&#xff0c;2023 年全球 VR 市場出貨量下滑了 10.7%。2024 年第一…

【必看】賣慘營銷

經常賣慘的人到底是什么心理&#xff1f; Berry Ni同學說&#xff1a; 吸引別人的注意力。想要得到關注。 讓你降低對他的期待。 讓你能夠在他做好一件小事的情況下就表揚他。 控制你對他的想法認知。 ? 浪矢心理同學說&#xff1a; 1&#xff0c;求關注。他覺得買慘有好處&…

【Excel、RStudio計算T檢測的具體操作步驟】

目錄 一、基礎知識1.1 顯著性檢驗1.2 等方差T檢驗、異方差T檢驗1.3 單尾p、雙尾p1.3.1 檢驗目的不同1.3.2 用法不同1.3.3 如何選擇 二、Excel2.1 統計分析工具2.1.1 添加統計分析工具2.1.2 數據分析 2.2 公式 -> 插入函數 -> T.TEST 三、RStudio 一、基礎知識 參考: 1.…

Gradle學習-4 創建二進制插件工程

二進制插件工程創建有兩種方式&#xff1a; 創建獨立的工程&#xff0c;調試的時候&#xff0c;需要手動發布成一個二進制插件jar包&#xff0c;給其他工程里面引用&#xff0c;進行功能測試。這種方式是比較麻煩的。創建buildSrc子工程&#xff0c;它是一個大工程中的子工程&…

開源網安榮獲第一新聲“2024中國最佳信創安全廠商”,信創實力獲認可

近日&#xff0c;由權威機構【第一新聲】與【天眼查】聯合發起的“2024中國最佳信創廠商系列榜單”評選中&#xff0c;開源網安以其技術創新能力和在信創領域持續投入&#xff0c;成功入選“中國最佳信創安全廠商”。 開源網安&#xff0c;作為軟件安全領域創領者&#xff0c;自…

數據結構 - C/C++ - 棧

目錄 結構特性 結構實現 結構容器 結構設計 順序棧 鏈式棧 結構特性 棧(stack)是線性表的一種形式&#xff0c;限定僅在表的一端進行插入或者刪除的操作。 棧頂 - 表中允許插入、刪除的一端稱為棧頂(top)&#xff0c;棧頂位置是可以發生變化的。 插入 - 進棧、入棧、壓棧…

數據結構預科

在堆區申請兩個長度為32的空間&#xff0c;實現兩個字符串的比較【非庫函數實現】 要求&#xff1a; 1> 定義函數&#xff0c;在對區申請空間&#xff0c;兩個申請&#xff0c;主函數需要調用2次 2> 定義函數&#xff0c;實現字符串的輸入&#xff0c;void input(char …

31 C++11

本節目標 c11簡介列表初始化變量類型推導范圍for循環新增加容器右值新的類功能可變參數模板 1. c11簡介 在2003年標準委員會提交了一份計數勘誤表&#xff08;簡稱TC1&#xff09;&#xff0c;使得c03這個名字已經取代了c98稱為c11之前的最新的c標準名稱。不過由于c03&#x…

JAVA學習筆記DAY12——MySQL基礎

文章目錄 數據庫概述為什么要使用數據庫相關概念關系型和非關系型RDBMS非RDBMS - NoSQL MySQL圖形化管理工具Navicat SQL前后端環境nginx 反向代理MD5加密 數據庫概述 為什么要使用數據庫 持久化&#xff1a;指把數據保存到可掉電存儲設備中&#xff0c;一般指將內存中的數據…

詳解歸一化、標準化、正則化以及batch normalization

文章目錄 what(是什么)where&#xff08;用在哪&#xff09;How&#xff08;如何用&&原理&#xff09;歸一化實現方式原理示例說明 標準化實現方式原理示例說明 正則化實現方式原理作用 Batch Normalizationpytorch中的batch normalization原理BN的作用 歸一化、標準化…

代理設計模式和裝飾器設計模式的區別

代理設計模式: 作用:為目標(原始對象)增加功能(額外功能,拓展功能) 三種經典應用場景: 1&#xff1a;給原始對象增加額外功能(spring添加事務,Mybatis通過代理實現緩存功能等等) 2&#xff1a;遠程代理&#xff08;網絡通信&#xff0c;輸出傳輸&#xff08;RPC&#xff0c;D…

【TB作品】智能臺燈,ATMEGA16單片機,Proteus仿真

智能臺燈 1 adc檢測光強光敏電阻 顯示電壓 2 光強太高 也就是高于臨界值 就關閉小燈 3 光強太低 也就是低于臨界值 就打開小燈 3 按鍵修改臨界值 顯示 實驗報告&#xff1a;基于ATMEGA16單片機的智能臺燈設計與Proteus仿真 1. 實驗背景 智能臺燈是一種能夠根據環境光強自動調…

代碼隨想錄第40天|動態規劃

完全背包 完全背包物品可以無限使用 01背包核心代碼 01背包中的二維dp數組的兩個for遍歷可顛倒, 而一維dp數組的一定先遍歷物品再遍歷背包容量狀態轉移方程(背包容量一定為遞減) 完全背包核心代碼 (只在完全背包中一維dp數組嵌套順序可顛倒, 實際題目需要確定遍歷順序) 狀…

【高考志愿】建筑學

目錄 一、專業介紹 1.1 專業定義 1.2 專業培養目標 1.3 核心課程 二、就業方向和前景 2.1 就業方向 2.2 專業前景 三、報考注意 四、行業趨勢與未來展望 五、建筑學專業排名 一、專業介紹 1.1 專業定義 建筑學&#xff0c;這一充滿藝術與科技魅力的學科&#xff0c;…

天線 有源 無源 參數

無源測試駐波比VSWR/回波損耗(Return Loss)≤2效率≥50%輸入阻抗50R10%增益天線方向圖3D場強圖方向性 有源測試 OTA 傳導測試&#xff1a;發射功率傳導測試&#xff1a;接收靈敏度總輻射功率TRP(Total Radiated Power)≥發射功率減3dB總接收靈敏度TIS&#xff08;Total Isotrop…

JDBC1(JDBC相關類與接口 ?連接mysql數據庫? 測試 不同數據庫廠商實現-MySQL和Oracle)

目錄 一、JDBC 1. JDBC相關類與接口 1.1 DriverManager 1.2 Connection 1.3 Statement 4.ResultSet 2. JDBC工作原理 二、連接mysql數據庫 1. 導入jar包 2. 使用DriverManager加載驅動類 3. Connection接口 4. Statement接口 5. ResultSet接口 ?編輯 6. 關閉并…

顯卡簡介

顯卡是計算機系統中一個重要的組成部分&#xff0c;它負責處理圖形和視頻輸出。顯卡的性能直接影響到計算機的圖形處理能力&#xff0c;因此在游戲、視頻編輯、3D渲染等需要高性能圖形處理的應用中&#xff0c;顯卡的選擇至關重要。本文將從顯卡的基本概念、性能指標、市場現狀…

【Node.JS】入門

文章目錄 Node.js的入門涉及對其基本概念、特點、安裝、以及基本使用方法的了解。以下是對Node.js入門的詳細介紹&#xff1a; 一、Node.js基本概念和特點 定義&#xff1a;Node.js是一個基于Chrome V8引擎的JavaScript運行環境&#xff0c;它使得JavaScript能夠運行在服務器…