2024-07-01 ARM作业

串口通讯实验

结果:没完成

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.mzph.cn/web/37817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 线程的生命周期管理

引言 线程是 Java 编程中重要的概念之一。通过多线程&#xff0c;程序可以同时执行多个任务&#xff0c;提高效率和响应能力。理解和管理线程的生命周期是编写高效并发程序的关键。本文将详细介绍 Java 线程的生命周期管理&#xff0c;并解释几种关键方法&#xff1a;start()、…

第7篇 智能合约是什么?——从产品经理视角看智能合约

引言 亲爱的读者们,欢迎大家来到我们的《区块链常识:从小白到顶级行业专家》专栏的第7篇!今天,我们要揭开智能合约的神秘面纱。别担心,这不是法律术语的堆砌,也不是代码的迷宫,而是一个让你在区块链上实现奇妙想法的魔法工具。准备好了吗?让我们开始吧! 智能合约的定…

RedHat9 | podman容器-续集

一、管理容器存储和网络资源 使用容器来运行简单的进程&#xff0c;然后退出。可以配置容连续运行特定服务&#xff0c;如数据库服务。如果持续运行服务&#xff0c;需要向容器添加更多的资源&#xff0c;如持久存储或对其他网络的访问权限。 针对企业容器平台上的大型部署&a…

为Ubuntu-24.04-live-server-amd64磁盘扩容

系列文章目录 Ubuntu-24.04-live-server-amd64安装界面中文版 文章目录 系列文章目录前言一、检查系统本身情况1.用 lsblk 命令查看自己系统磁盘是什么状态2.用 df -h 命令查看文件系统的磁盘空间使用情况3.解决 Ubuntu-24.04 磁盘空间只能用一半的问题3-1扩展逻辑卷&#xff…

这才是CSDN最系统的网络安全学习路线(建议收藏)

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

基于X86+FPGA+AI的智能仓储AGV机器人解决方案

应用场景 智能仓储是物流过程的一个环节&#xff0c;智能仓储的应用&#xff0c;保证了货物仓库管理各个环节数据输入的速度和准确性&#xff0c;确保企业及时准确地掌握库存的真实数据&#xff0c;合理保持和控制企业库存&#xff0c;其中搬运环节目前已大量采用AGV的方式进行…

python-逻辑语句

if else语句 不同于C&#xff1a;else if range语句&#xff1a; continue continue的作用是&#xff1a; 中断所在循环的当次执行&#xff0c;直接进入下一次 continue在嵌套循环中的应用 break 直接结束所在的循环 break在嵌套循环中的应用 continue和break&#xff0c;在…

星火认知大模型Spark3.5 api调用 #AI夏令营 #Datawhale #夏令营

环境安装 pip install --upgrade -q spark_ai_python 官网注册 链接&#xff1a;https://console.xfyun.cn/app/myapp 官方会在报名成功后&#xff0c;立即发放星火大模型 Spark Max的 API 额度助力我们完成赛事&#xff0c; 200w Tokens 任你花&#xff01; 暑期有四场夏令营…

HDC Cloud 2024 | CodeArts加速软件智能化开发,携手HarmonyOS重塑企业应用创新体验

2024年6月21~23日&#xff0c;华为开发者大会HDC 2024在东莞溪流背坡村隆重举行。期间华为云主办了以“CodeArts加速软件智能化开发&#xff0c;携手HarmonyOS重塑企业应用创新体验”为主题的分论坛。论坛汇聚了各行各业的专家学者、技术领袖和开发者&#xff0c;共同探讨Harmo…

养殖自动化管理系统:开启智慧养殖新篇章

在现代农业的快速演进中&#xff0c;养殖业正经历一场前所未有的技术革命。养殖自动化管理系统&#xff0c;作为这场变革的前沿科技&#xff0c;正逐步成为推动行业高效、环保、可持续发展的关键力量。本文将深入探讨自动化养殖系统如何通过精准管理、智能监控、数据驱动决策&a…

C++ 把类封装成静态链接库

目录 一、动态链接库和静态链接库的区别 二、对比 1、静态链接库 (Static Library) 2、动态链接库 (Dynamic Library) 三、制作步骤 1. 创建类头文件 2. 实现类 3. 创建静态链接库工程 4. 构建静态链接库 5. 使用静态链接库 6、添加静态库和头文件路径 一、动态链接库…

SpringCloud_Ribbon负载均衡

概述 SpringCloud底层其实是利用了一个名为Ribbon的组件&#xff0c;来实现负载均衡功能的。 源码 LoadBalancerInterceptor 其中含有intercept方法&#xff0c;拦截用户的HttpRequest请求&#xff1a; request.getURI() 获取请求uri&#xff0c;即http://userservice/use…

3D Gaussian Splatting代码中的Gaussian_Module和Cameras两个类的代码解读

Gaussian_model 讨论Gaussian_model这个类&#xff0c;是因为里面包含了三维高斯分布的基本信息&#xff0c;里面定义了各种参量的构建方式、用于优化学习的激活函数、学习率设置方法和高斯点优化过程中的增加与删除方式及对应优化器的处理方法。这个类定义在scene文件夹中的g…

反激开关电源反馈电路相关参数选型

Vb的电压正常变化范围是&#xff1a;0-1V&#xff08;最低0V&#xff0c;由于有稳压管&#xff0c;最高不会超过1V&#xff09; Vb的电压越高&#xff0c;则输出占空比越大&#xff0c;Vb电压越低&#xff0c;则输出占空比越小 那么Va的正常变化范围应该是&#xff1a;1.4-4.…

怎么配置electron-builder

electron-builder 是一个用于 Electron 应用程序打包和发布的工具,它支持 macOS、Windows 和 Linux 平台。以下是一个清晰且详细的 electron-builder 配置指南,包括分点表示和归纳,并参考了相关文章中的信息。 一、安装 electron-builder 首先,你需要在你的 Electron 项目…

云卓SKYDROID-H30——科技改变未来

云卓H30采用高通处理器、搭载安卓嵌入式系统&#xff0c;拥有三个工作频率&#xff0c;让图像更清晰、延迟更低、距离远、抗干扰性强&#xff0c;支持多种接口&#xff0c;更有10.1寸高清工业级阳光可视屏&#xff0c;防尘耐磨&#xff0c;结构强度高&#xff0c;适用于各种严苛…

Python和tkinter单词游戏

Python和tkinter单词游戏 数据字典文本文件&#xff0c;文件名为Dictionary.txt&#xff0c;保存编码格式为&#xff1a;utf-8。文本内容&#xff1a;每行一个 单词 &#xff0c;单词和解释用空格分隔&#xff0c;如 a art.一(个)&#xff1b;每一(个) ability n.能力&#…

springboot实验报告管理系统-计算机毕业设计源码10596

目录 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能分析 …

HarmonyOS Next开发学习手册——单选框 (Radio)

Radio是单选框组件&#xff0c;通常用于提供相应的用户交互选择项&#xff0c;同一组的Radio中只有一个可以被选中。具体用法请参考 Radio 。 创建单选框 Radio通过调用接口来创建&#xff0c;接口调用形式如下&#xff1a; Radio(options: {value: string, group: string})…

高考不是终点:如何利用教育资源实现人生跃迁?普鲁士教育的利弊,你了解吗?从科举到高考,中国教育的变迁!链接上层,获取核心资源的途径

高考已经结束&#xff0c;这两天分数将会陆续出来&#xff0c;无论结果好坏&#xff0c;我都希望你明白一些道理。这些道理在学校老师不会教你&#xff0c;但是非常重要。 一、中国的科举制度 科举制度是为王朝服务的。 科举制度是中国古代通过考试选拔官员的制度&#xff0c…