day6 arm

main.c

#include "uartt.h"//封裝延時函數void delay(int ms){int i,j;for(i=0;i<ms;i++){for(j=0;j<2000;j++);}}int main(){//串口初始化uart4_init();//燈初始化led_init();//char a;char *s;while(1){myputchar('\n');myputchar('\r');//從串口讀取一個字符// a=mygetchar();// myputchar(a+1);s = mygets();//myputs(s);if( mystrcmp(s,"led_on")==0){//開燈led_on();//myputs(s);}if(mystrcmp(s,"led_off")==0){//關燈led_off();//myputs(s);}}return 0;}

uartt.c

#include "uartt.h"char buf[51];
//串口數據初始化
void uart4_init()
{//1.uart和gpiob gpiog的時鐘使能RCC->MP_AHB4ENSETR |=(0x1<<2);//使能gpiobRCC->MP_AHB4ENSETR |=(0x1<<6);//使能gpiogRCC->MP_APB1ENSETR |=(0X1<<16);//使能uart4時鐘//2.設置pb2和pg11的管腳復用GPIOB->MODER &= (~(0X3<<4));GPIOB->MODER |=(0X2<<4);//設置復用GPIOB->AFRL &=(~(0xF<<8));GPIOB->AFRL |=(0X8<<8);//設置uart4功能復用GPIOG->MODER &= (~(0X3<<22));GPIOG->MODER |=(0X2<<22);//設置復用GPIOG->AFRL &=(~(0xF<<12));GPIOG->AFRL |=(0X6<<12);//設置uart4功能復用//3.先去設置串口禁用,方便設置數據格式USART4->CR1 &=(~0X1);//4.設置8位數據位USART4->CR1 &=(~(0X1<<12));USART4->CR1 &=(~(0X1<<28));//5.設置有沒有奇偶校驗USART4->CR1 &=(~(0X1<<10));//6.設置16倍采樣USART4->CR1 &=(~(0X1<<15));//7.設置1位停止位USART4->CR2 &=(~(0X3<<12));//8.設置1分頻USART4->PRESC &=(~(0XF));//9.設置波特率為115200bpsUSART4->BRR |=(0x22B);//10.發送器.接收器使能USART4->CR1 |=(0X1<<3);USART4->CR1 |=(0X1<<2);//11.串口使能USART4->CR1 |=0X1;
}void led_init(){//使能RCC->MP_AHB4ENSETR |=(0XC3<<4);GPIOE->MODER &=(~(0X3<<20));GPIOE->MODER |= (0X1<<20);//設置推挽輸出GPIOE->OTYPER &=(~(0X1<<10));//設置輸出速度為低速GPIOE->OSPEEDR &=(~(0x3<<20));//設置無上拉下拉GPIOE->PUPDR &=(~(0x3<<20));}void led_on(){GPIOE->ODR |=(0X1<<10);}void led_off(){GPIOE->ODR &=(~(0X1<<10));}
//封裝函數發送一個字符數據
void myputchar(char i)
{//1.判斷TDR寄存器是否為空,如果為空,向TDR寄存器寫入數據//1為不滿  0為滿while(!(USART4->ISR&(0x1<<7)));USART4->TDR = i;//2.阻塞等待數據傳輸完成,函數返回//1表示完成 while(!(USART4->ISR&(0X1<<6)));
}char mygetchar()
{char c;//判斷RDR寄存器是否有就緒的數據,如果有就讀取,沒有就等待while(!(USART4->ISR&(0x1<<5)));c = USART4->RDR;return c;
}void myputs(char *s)
{while(*s){myputchar(*s);s++;}myputchar('\n');myputchar('\r');
}char * mygets()
{unsigned int i;for(i=0;i<50;i++){buf[i]=mygetchar();myputchar(buf[i]);if(buf[i]=='\r'){break;}}buf[i]='\0';myputchar('\n');return buf;
}int mystrcmp(char* p,char* q)
{while(*p==*q&&*p!='\0'){p++;q++;}if(*p>*q){return 1;}else if(*p<*q){return -1;}else{return 0;}
} 

uartt.h

#ifndef  __UARTT_H__
#define  __UARTT_H__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_uart.h"
void uart4_init();
void  led_init();
void myputchar(char i);
char mygetchar();
void myputs(char *s);
char * mygets();
int mystrcmp(char* p,char* q);void led_on();void led_off();#endif

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

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

相關文章

手把手教你反編譯小程序

本次實驗環境 操作系統: win10 10.0.19042 node: v14.17.0 微信開發者工具: Stable 1.05.2110290 前期準備 在電腦端安裝模擬器工具&#xff0c;這里以夜神模擬器為例&#xff0c; 在模擬器中安裝微信&#xff1a;用于微信打開小程序時加載小程序包。在模擬器中文件管理器&…

論文筆記:A review on multi-label learning

一、介紹 傳統的監督學習是單標簽學習&#xff0c;但是現實中一個實例可能對應多個標簽。這篇文章介紹了多標簽分類的定義和評價指標、多標簽學習的算法還有其他相關的任務。 二、問題相關定義 2.1 多標簽學習任務 假設 X R d X R^d XRd&#xff0c;表示d維的輸入空間&am…

面試經典150題(10-13)

leetcode 150道題 計劃花兩個月時候刷完&#xff0c;今天&#xff08;第四天&#xff09;完成了4道(10-13)150&#xff1a; 10. &#xff08;45. 跳躍游戲 II&#xff09;題目描述&#xff1a; 給定一個長度為 n 的 0 索引整數數組 nums。初始位置為 nums[0]。 每個元素 nums[…

日本服務器:確保其穩定性的幾個要點

?  在租用日本服務器時&#xff0c;用戶們大多一定會關注它的穩定性&#xff0c;其實這些顧及都是正常的。畢竟&#xff0c;網站要想正常運行&#xff0c;保障服務器穩定是關鍵。本文將討論有關如何保障日本服務器穩定性的一些有用技巧&#xff0c;希望對您有所幫助。 1.注重…

Linux定時循環備份指定文件或文件夾,每月永久備份留1份

備份需求&#xff1a;每天完成一次指定文件的備份&#xff0c;壓縮后存放到指定目錄 問題&#xff1a;備份時間長了以后占用空間較大&#xff0c;浪費存儲&#xff0c;實際歷史備份意義不大&#xff0c;并不需要永久保存。但是如果直接刪除可能導致無法恢復歷史狀態的數據。 …

SpringBoot 啟動加載器解析

計時器介紹 啟動加載器實戰 實現方式1 實現CommandLineRunner接口重寫run方法通過Order進行排序 示例: Component Order(1) public class FirstCommandlineRunner implements CommandLineRunner {Overridepublic void run(String... args) throws Exception {System.out.pr…

一篇上手機器學習

一、上手機器學習的幾個階段 上手機器學習&#xff0c;第一步當然是看完我的這篇文章啦~&#xff0c;然后就按以下步驟來就可以了&#xff1a; 學習Python編程語言&#xff1a;Python是一種易于學習的高級編程語言&#xff0c;廣泛應用于機器學習領域。你可以通過學習Python的…

第三節、項目支付功能實戰-微信支付平臺接入流程,小程序賬號注冊、商戶注冊

簡介 本篇介紹小程序的注冊流程、商戶平臺的注冊流程、以及小程序和商戶平臺如何進行綁定。 微信小程序注冊 由于項目中使用了小程序進行支付&#xff0c;所以首先來注冊小程序。小程序注冊網站如下&#xff1a;小程序注冊地址 小程序賬號注冊 1、鏈接頁面點擊“前往注冊”…

carla安裝中的問題

1、carla carla安裝完后&#xff0c;需要使用python調用API去更換地圖&#xff0c;增加車輛等 使用Python調用API過程中可能會報錯&#xff1a; 報錯1&#xff1a;carla API&#xff08;Carla包&#xff09;版本不對 **解決方法&#xff1a;**需要將這個目錄下的三個文件拷…

數學建模算法

算法部分 1. 評價類模型2. TOPSIS3. 線性規劃4. 聚類分析5. 預測模型6. 拉伊達準則(對異常值進行剔除)7. 數據擬合8. 圖論代碼練習1. 模擬圓周率2. 斐波那契數列3. 四只鴨子落在一個圓中概率4. 方程2: y" uy y,初值y(0) 1,y(0) 0 算法講解 matlab代碼大全 1. 評價類模型…

【Python】修改pip 默認安裝位置

使用pip安裝的時候&#xff0c;一般是默認安裝在c盤里的。這樣做很容易會讓c盤的文件堆滿。那么如何讓pip安裝的包放入d盤呢&#xff1f; 查看pip默認安裝的位置 在cmd里輸入python -m site&#xff0c;這里可以看到&#xff0c;安裝包會默認下載到c盤中 從這里可以看到&am…

【Spring教程15】Spring框架實戰:詳解解讀AOP的工作流程和AOP的核心概念

目錄 1 AOP工作流程2 AOP核心概念 歡迎大家回到《 Java教程之Spring30天快速入門》&#xff0c;本教程所有示例均基于Maven實現&#xff0c;如果您對Maven還很陌生&#xff0c;請移步本人的博文《 如何在windows11下安裝Maven并配置以及 IDEA配置Maven環境》&#xff0c;本文…

如何使用cpolar+Inis在Ubuntu系統快速搭建本地博客網站公網可訪問

文章目錄 前言1. Inis博客網站搭建1.1. Inis博客網站下載和安裝1.2 Inis博客網站測試1.3 cpolar的安裝和注冊 2. 本地網頁發布2.1 Cpolar臨時數據隧道2.2 Cpolar穩定隧道&#xff08;云端設置&#xff09;2.3.Cpolar穩定隧道&#xff08;本地設置&#xff09; 3. 公網訪問測試總…

AspNetCore 中使用 Knife4jUI 更加友好的Swagger界面

&#x1f680;介紹 aspnetcore.knife4j是一個基于.NET Core平臺的Swagger UI庫&#xff0c;它提供了API文檔的生成和管理功能。這個庫的前身是swagger-bootstrap-ui&#xff0c;在Java項目中廣泛使用&#xff0c;由于其優秀的界面和易用性被許多開發者所推崇。現在&#xff0c…

LV.13 D2 開發板啟動流程 學習筆記

一、開發板啟動過程 EMMC&#xff1a;相當于電腦的外存&#xff0c;斷電不丟失 開發板上電后首先運行SOC內部iROM中固化的代碼(BL0)&#xff0c;這段代碼先對基本的軟硬件環境(時鐘等...)進行初始化&#xff0c;然后再檢測撥碼開關位置獲取啟動方式&#xff0c;然后再將對應存儲…

基于SSM+MySQL學生宿舍管理系統的設計與實現(源碼+數據庫+文檔)

摘 要 近年來&#xff0c;隨著計算機技術的不斷發展和運用&#xff0c;許多實際問題都得到了較好地解決。隨著現代社會對企業經營的需求日益增長&#xff0c;企業的無紙辦公也逐漸得到了推廣。本學生宿舍管理系統的設計開發&#xff0c;目標就是解決宿舍管理復雜的人為管理&a…

PHP變量用{}的使用方法

{} 可以將變量名稱作為一個整體使用 "666666".$id."888888"; //可以簡化為如下 "666666{$id}888888"; //當然$id也可以用$ids[$id] 參考&#xff1a; PHP 大括號{} 的使用_php 函數放在{}-CSDN博客

[23] Self-conditioned Image Generation via Generating Representations

[paper | code] 用生成對象本身作為控制信號&#xff0c;實現無條件圖像生成。訓練階段。Step1&#xff1a;用預訓練模型&#xff08;例如&#xff1a;Moco v3&#xff09;提取生成對象的特征編碼&#xff1b;Step2&#xff1a;基于特征編碼&#xff0c;訓練一個擴散模型RDM&a…

pycharm手動安裝包

1.下載對應的包 TTS PyPI 2.手動解壓&#xff0c;找到文件放到pycharm對應項目的lib文件夾中 以TTS包為例&#xff0c;找到下載并解壓的包中的2個文件&#xff0c;一個名稱一個info結尾 3.放到項目的lib文件夾中 eg&#xff1a;路徑&#xff1b;C:\doc\myProject\speaker\venv…

前端知識(十四)——淺談用戶體驗測試的主要功能

用戶體驗(User Experience&#xff0c;簡稱UX)在現代軟件和產品開發中變得愈發重要。為了確保產品能夠滿足用戶期望&#xff0c;提高用戶滿意度&#xff0c;用戶體驗測試成為不可或缺的環節。本文將詳細探討用戶體驗測試的主要功能&#xff0c;以及它在產品開發過程中的重要性 …