2024-07-01 ARM作业

devtools/2024/9/24 13:19:34/

串口通讯实验

结果:没完成

main.c
#include "uart4.h"
char Str;
int main()
{//串口通信初始化hal_uart_init();while(1){// hal_delayms(1000);// Str = hal_get_char();// if(Str){// 	hal_put_char(Str+1);// }}return 0;
}
uart4.c
#include "uart4.h"
void hal_delayms(int ms)
{int i,j;for(i=0;i<ms;i++){for(j=0;j<2000;j++);}
}
void hal_uart_init()
{/*****RCC初始化*********///AHB4总线使能GPIOB[1]、GPIOG寄存器[6]RCC->MP_AHB4ENSETR |= (1<<1);RCC->MP_AHB4ENSETR |= (1<<6);//APB1总线使能USART4寄存器[16]RCC->MP_APB1ENSETR |= (1<<16);/*****UART初始化********///PRESC 不分频 [3:0]=0000USART4->PRESC &= 0<<3;//BRR 规定波特率 16倍采样率 64M 115200USART4->BRR=0X22B;//64000000/115200//CR1//设置M[1:0]='00'位,分别为[28][12]位 规定数据位长度8位USART4->CR1 &= ~(1<<28);USART4->CR1 &= ~(1<<12);//采样率设置 16位 [15]=0 (UE==0时设置)USART4->CR1 &= ~(1<<15);//无校验位 [10]=0 (UE==0时设置)USART4->CR1 &= ~(1<<10);//设置TE位,在发送的一开始发送空闲帧 [3]=1//设置RE,检测开始位 [2] = 1//设置UE位,使能USART 1 [0]=1USART4->CR1 |= 0x0D;//1101//CR2//规定停止位1位 [13:12]=00USART4->CR2 &= ~(0x3<<12);/*****GPIO初始化********///设置PB[2] RX PG[11]TX 为复用模式 10GPIOB->MODER &= ~(0x3<<4);GPIOB->MODER |= 1<<5;GPIOG->MODER &= ~(0x03<<22);GPIOG->MODER |= 1<<23;//配置寄存器为USART功能 AF8GPIOB->AFRL &= ~(0xf<<8);GPIOB->AFRL |= (0x8<<8);GPIOG->AFRH &= ~(0xf<<12);GPIOG->AFRH |= (0x3<<13);
}
void hal_put_char(char str){//判断ISR[7]的值if((USART4->ISR & 0x00000080) ==0x00000080){//表示数据寄存器为空USART4->TDR=str;}//判断ISR[6]的值if((USART4->ISR & 0x00000040) ==0x00000040){//一次数据发送完成}
}
char hal_get_char(){//判断ISR[5]的值if((USART4->ISR & 0x00000020) == 0x00000020){//表明收到数据return USART4->RDR;}return 0;
}
uart4.h
#ifndef __LED_H__
#define __LED_H__
#include "stm32mp1xx_uart.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
void hal_uart_init();//uart初始化
void hal_put_char(char str);//发送一个字符
void hal_put_string(char *string);//发送一个字符串
char hal_get_char();//接受一个字符
char hal_get_string();//接受一个字符串
void hal_delayms(int ms);
#endif


http://www.ppmy.cn/devtools/56805.html

相关文章

PHP希尔顿酒店管理系统-计算机毕业设计源码041148

摘 要 随着互联网和宽带上网的普及&#xff0c;Internet 网站在中国异军突起&#xff0c;并日益渗透到人们的日常生活中。网站是运用现代通信技术、计算机和网络技术进行的一种社会形态&#xff0c;其目的是通过互联网满足人们的需求。在信息高度发达的今天&#xff0c;酒店业务…

强化学习-3深度学习基础

文章目录 1 强化学习与深度学习的关系2 线性回归3 梯度下降4 逻辑回归5 全连接网络6 更高级的神经网络6.1 卷积神经网络6.2 循环神经网络6.3 transformer 将深度学习和强化学习结合起来&#xff0c;利用深度学习网络强大的拟合能力通过将状态、动作等作为输入&#xff0c;来估计…

spring boot 整合 sentinel

注意版本问题 我这是jdk11 、spring boot 2.7.15 、 alibaba-sentinel 2.1.2.RELEASE <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.15</version><…

阿里 Mobile-Agent-v2:基于大模型的安卓鸿蒙自动化工具

与之前介绍的 DigiRL类似, Mobile-Agent-v2是一个支持安卓和鸿蒙系统的自动化工具&#xff0c;它使用视觉模型理解手机屏幕&#xff0c;并利用 ADB 来实现操作手机&#xff0c;你可以在本地运行&#xff0c;或者通过手机截图在线体验 Mobile-Agent-v2 从演示来看&#xff0c;可…

Agentic AI与Agentic Workflow:下一代智能自动化

一、引言 看到一篇关于智能自动化的文章&#xff0c;很有启发&#xff0c;原文链接在此&#xff0c;供大家学习参考。Agentic AI和Agentic Workflow作为AI领域的新星&#xff0c;预示着自动化和智能化的全新阶段。本文将剖析Agentic AI的内涵、特性、与传统AI Agent的差异&…

Python 基础:用 json 模块存储和读取数据

目录 一、用 json 存储数据二、用 json 读取数据 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 本文参考&#xff1a;《Python编程&#xff1a;从入门到实践&#xff08;第2版&#xff09;》 用户关闭程序时&#…

Oracle中的序列(Sequence)是一种数据库对象

Oracle中的序列&#xff08;Sequence&#xff09;是一种数据库对象&#xff0c;用于生成数字序列&#xff0c;通常用于为主键列生成唯一、连续的数值。以下是一些使用序列的案例&#xff1a; 1. **为主键生成唯一值**&#xff1a; 在Oracle中&#xff0c;序列最常用的场景是…

【GameFramework扩展应用】6-2、替换GameFramework.dll源码

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q764424567/article/details/1…