0702_ARM5

練習:使用usart4
main.c

#include "uart4.h"int main()
{// 初始化 UART4hal_uart4_init();while (1) {// 發送一個字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0;
}

usart4.c

#include "uart4.h"//******引腳PB2讀取 PG11寫入*****//rcc,gpio,uart,初始化
void hal_uart4_init(){//rcc章節初始化//1.使能GPIOB組控制器RCC->MP_AHB4ENSETR |= (0X1<<1);//2.是能GPIOG組控制器RCC->MP_AHB4ENSETR |= (0X1<<6);//3.是能UART4控制器RCC->MP_APB1ENSETR |= (0x1<<16);//GPIO章節初始化//1.GPIOB_MODE寄存器初始化  設置對應引腳模式功能 復用功能GPIOB->MODER &= ~(0x3<<4);     //MODER默認為0xffffffff 先將4,5為清零GPIOB->MODER |= (0x2<<4);//2.GPIOG_MODE寄存器初始化  設置對應引腳模式功能 復用功能GPIOG->MODER &= ~(0x3<<22);     GPIOG->MODER |= (0x2<<22);//3.GPIOB_AFRL寄存器設置對應引腳復用功能GPIOB->AFRL &= ~(0x0f<<8);GPIOB->AFRL |= (0x8<<8);       //AFRL默認為0x00000000 所以這里直接按位|//4.GPIOG_AFRH寄存器設置對應引腳復用功能GPIOG->AFRH &= ~(0x0f<<12);GPIOG->AFRH |= (0x6<<12);       //PG11在AFRH寄存器中//UART章節初始化//1.USART4串口控制寄存器初始化//USART4_CR1初始值為0x00000000//1.8位數據位USART4->CR1 &= ~(0x1<<12);USART4->CR1 &= ~(0x1<<28);//2.16倍采樣率USART4->CR1 &= ~(0X1<<15);//3.無校驗位USART4->CR1 &= ~(0X1<<10);//4.設置發送和接收使能USART4->CR1 |= (0x6<<1);//USART4_CR2寄存器 設置停止位//USART4_CR2 默認值 0x00000000//5.1個停止位USART4->CR2 &= ~(0X3<<12);//6.設置波特率USART4->BRR = 0X22B;//7.設置串口使能USART4->CR1 |= 0x1;//USART4_PRESC 寄存器設置串口分配//USART4_PRESC初始值位0x00000000//8.不分頻USART4->PRESC &= ~(0x0f);}
//發送字符
void hal_put_char(const char str){//判斷發送數據是否為空while(!(USART4->ISR & (0X1<<7))){//將數據寫入寄存器中}USART4->TDR = str;while(!(USART4->ISR & (0X1<<6))){}
}
//發送字符串
void hal_put_string(const char *string){//判斷發送數據寄存器是否為空while(*string){//將數據寫入寄存器中hal_put_char(*string++);}
}
//接收字符
char hal_get_char(){//判斷接收數據是否為空char c=0;while(!(USART4->ISR & (0X1<<5))){}c=USART4->RDR;return c;
}
// 接收字符串
char* hal_get_string(){static char str[128]; // 使用靜態變量以保持內容int i = 0;for(i = 0; i < 127; i++){ // 確保有空間存放'\0'str[i] = hal_get_char();if(str[i] == '\n' || str[i]=='\r'){ // 也考慮回車作為結束符break;}}str[i] = '\0'; // 確保字符串以null結尾return str;
}

usart4.h

#ifndef __UART4_H__
#define  __UART4_H__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_uart.h"
//rcc,gpio,uart,初始化
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

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

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

相關文章

c# 操作mysql的幫助類

MySqlHelper 的靜態類&#xff0c;其中包含了一些用于執行 MySQL 數據庫操作的方法。這些方法包括執行存儲過程、插入、更新、刪除操作以及執行數據庫事務查詢操作等。 該類中的方法主要有&#xff1a; ExecuteNonQuery 方法&#xff1a;用于執行存儲過程、插入、更新、刪除操…

如何降低布隆過濾器的誤判率

降低布隆過濾器的誤判率&#xff08;也稱為假陽性率&#xff09;是布隆過濾器應用中一個關鍵的問題。誤判率主要來源于哈希碰撞&#xff0c;即不同的元素可能被哈希到相同的位置。為了降低誤判率&#xff0c;可以從以下幾個方面進行優化&#xff1a; 1. 增加哈希函數的個數 原…

Asp.net Core 反射加載dll

定義一個類庫&#xff0c;定義接口 namespace Plugin {public interface IPlugin{void EllisTest();} }定義另外一個類庫&#xff0c;引用上面的類庫&#xff0c;實現接口 using Plugin;namespace UserCustom {public class Custom : IPlugin{public void EllisTest(){Conso…

二刷力扣——DP算法(子序列問題)

300. 最長遞增子序列 定義是以本元素結尾&#xff0c;所以公式初始化都好弄。但是太慢 class Solution {public int lengthOfLIS(int[] nums) {int nnums.length;int[] dp new int[n];//以自己結尾的最長遞增子序列dp[0]1;int maxzi1;for(int i1;i<n;i){dp[i]1;for(int j…

QT中QDomDocument讀寫XML文件

一、XML文件 <?xml version"1.0" encoding"UTF-8"?> <Begin><Type name"zhangsan"><sex>boy</sex><school>Chengdu</school><age>18</age><special>handsome</special>&l…

【YOLOv5進階】——引入注意力機制-以SE為例

聲明&#xff1a;筆記是做項目時根據B站博主視頻學習時自己編寫&#xff0c;請勿隨意轉載&#xff01; 一、站在巨人的肩膀上 SE模塊即Squeeze-and-Excitation 模塊&#xff0c;這是一種常用于卷積神經網絡中的注意力機制&#xff01;&#xff01; 借鑒代碼的代碼鏈接如下&a…

在C#中使用RabbitMQ做個簡單的發送郵件小項目 _

前言 好久沒有做項目了&#xff0c;這次做一個發送郵件的小項目。發郵件是一個比較耗時的操作&#xff0c;之前在我的個人博客里面回復評論和友鏈申請是會通過發送郵件來通知對方的&#xff0c;不過當時只是簡單的進行了異步操作。那么這次來使用RabbitMQ去統一發送郵件&#x…

vue中路由來回切換頁面直接卡死

今天發現一個很嚴重的問題&#xff0c;項目好不容易做好了&#xff0c;結果頁面多了&#xff0c;切換之后卡死。頁面所有的交互效果都失效了。 排查了許久的錯誤原因最后發現原來是路由名稱重復了。 如上圖當頁面跳轉到riskdetails詳細頁面之后&#xff0c;框架則被這個詳情頁…

隨機森林R語言預測工具

隨機森林&#xff08;Random Forest&#xff09;是一種基于決策樹的集成學習方法&#xff0c;它通過構建多個決策樹并集成它們的預測結果來提高預測的準確性。在R語言中&#xff0c;我們可以使用randomForest包來構建和訓練隨機森林模型。以下是對隨機森林的詳細介紹以及使用R語…

java高仿真數據生成器-需要的拿去

java高仿真數據生成器源碼-需要的拿去 nit-random-tools 介紹&#xff1a;高仿真數據生成器 逆天開源 java 證號碼, 姓名&#xff0c;職業, 日期&#xff0c;手機號 生成器 功能列表 編號功能描述class1號 生成器NitIdcardGenerator2姓名 生成器NitChineseNameGenerator3職…

node.lib下載失敗,手動下載并配置

在無網絡環境&#xff0c;或者網絡不好的環境&#xff0c;node.lib會下載失敗&#xff0c;此時可手動下載并進行配置。 我們以 node16.17.0 為例&#xff1a; 下載地址 分別下載node.lib和headers https://registry.npmmirror.com/-/binary/node/v16.17.0/win-x64/node.lib…

目標檢測算法的技術革新與應用案例

引言 目標檢測作為計算機視覺領域中的一項關鍵技術&#xff0c;近年來取得了顯著進展。從傳統的基于特征的方法到如今的深度學習算法&#xff0c;目標檢測技術在準確性、速度和魯棒性上均實現了大幅提升。本文將深入探討目標檢測算法的技術原理、發展歷程、最新進展以及實際應…

HarmonyOS--開發者證書考試地址

初級證書&#xff1a;華為開發者學堂 高級證書&#xff1a;華為開發者學堂 對應課程&#xff1a;華為開發者學堂

Linux rpm與yum

一、rpm包管理 rpm用于互聯網下載包的打包及安裝工具&#xff0c;它包含在某些Linux分發版中。它生成具有.RPM擴展名的文件。RPM是RedHat Package Manager (RedHat軟件包管理工具&#xff09;的縮寫&#xff0c;類似windows的setup.exe&#xff0c;這一文件格式名稱雖然打上了R…

辦理北京公司注銷流程和步驟說明

公司的生命周期是多變的&#xff0c;有時候&#xff0c;業務可能會結束或者出現其他原因&#xff0c;需要注銷公司。注銷公司是一個復雜的法律過程&#xff0c;需要遵循一系列的步驟和提交特定的材料。下面我們將詳細介紹北京注銷公司的流程以及需要準備的材料&#xff0c;以幫…

《等保測評實戰指南:從評估到加固的全程解析》

在當今數字化時代&#xff0c;信息安全已成為企業生存與發展的基石。隨著網絡攻擊手段的不斷演變和復雜度的提升&#xff0c;信息系統等級保護&#xff08;簡稱“等保”&#xff09;作為國家信息安全保障體系的重要組成部分&#xff0c;其重要性日益凸顯。《等保測評實戰指南&a…

私有云統一多云管理平臺主要服務內容

私有云統一多云管理平臺&#xff0c;作為企業IT架構現代化的關鍵組成部分&#xff0c;旨在為企業提供高效、靈活、安全的云計算資源管理解決方案。這類平臺通過整合和優化不同云環境(包括私有云、公有云、混合云)的管理&#xff0c;幫助企業打破云孤島&#xff0c;實現資源的統…

clickhouse-client 數據導入導出

ClickHouse提供了clickhouse-client客戶端可用于數據的快速導入導出 官方文檔&#xff1a; Inserting Data from a File JSONL 格式 導出 clickhouse-client -h 127.0.0.1 --port 9000 -u default --password XXX -d default \--query "SELECT * from default.doc_typ…

【游戲引擎之路】登神長階(五)

5月20日-6月4日&#xff1a;攻克2D物理引擎。 6月4日-6月13日&#xff1a;攻克《3D數學基礎》。 6月13日-6月20日&#xff1a;攻克《3D圖形教程》。 6月21日-6月22日&#xff1a;攻克《Raycasting游戲教程》。 6月23日-6月30日&#xff1a;攻克《Windows游戲編程大師技巧》。 …

【Qwen2部署實戰】Qwen2初體驗:用Transformers打造智能聊天機器人

系列篇章&#x1f4a5; No.文章1【Qwen部署實戰】探索Qwen-7B-Chat&#xff1a;阿里云大型語言模型的對話實踐2【Qwen2部署實戰】Qwen2初體驗&#xff1a;用Transformers打造智能聊天機器人3【Qwen2部署實戰】探索Qwen2-7B&#xff1a;通過FastApi框架實現API的部署與調用4【Q…