ARM课程发送一个字符,接收一个字符

fun.c

#include "my_typ_head.h"//初始化
void uart_init()
{//1.使能GPIOB/GPIOG/UART4时钟  RCC_MP_AHB4ENSETR/RCC_MP_APB1ENSETR//设置GPIOB\GPIOG控制器时钟使能  0X50000A28(*(unsigned int *)0X50000A28) |= (0X10);(*(unsigned int *)0X50000A28) |= (0X1<<6);//设置UART4时钟使能(*(unsigned int *)0X50000A00) |= (0X1<<16);//2.设置PG11/PB2为复用功能  GPIOX_MODERGPIOG->MODER &=(~(0X3<<22));GPIOG->MODER |=(0X2<<22);GPIOB->MODER &=(~(0X3<<4));GPIOB->MODER |=(0X2<<4);//3.PG11/PB2为uart4复用功能  GPIOX_AFRL/GPIOX_AFRHGPIOB->AFRL |=(0X1000<<8);GPIOG->AFRH |=(0X0110<<12);//4.设置数据位宽为8位  USART_CR1USART4->CR1 &= (~(0X1<<28));USART4->CR1 &= (~(0X1<<12));//5.设置16倍过采样USART_CR1USART4->CR1 &=(~(0X1<<15));//6.设置无校验  USART_CR1USART4->CR1 &=(~(0X1<<10));//7.设置停止位  USART_CR2USART4->CR1 &=(~(0X3<<12));//8.设置波特率  USART_BRRUSART4->BRR |=(0X22B);//9.发送器使能  USART_CR1USART4->CR1 |=(0X1<<3);//10.接收器使能  USART_CR1USART4->CR1 |=(0X1<<2);//11.串口使能  USART_CR1USART4->CR1 |=(0X1);}char readchar()
{char c;//1.判断接收数据寄存器数据是否准备好  USART_ISR[5]while(!(USART4->ISR&(0X1<<5)));//2.如果准备好就读取  USART_RDRc=USART4->RDR;//3.返回  return c;
}void sendchar(char c)
{//1.判断发送数据寄存器是否不满USART_ISR[7]while(!(USART4->ISR&(0X1<<7)));//2.如果不满就写入  USART_TDRUSART4->TDR=c;//3.等到发送完成后函数结束  USART_ISR[6]while(!(USART4->ISR&(0X1<<6)));
}

main.c

#include "my_typ_head.h"int main(){//初始化uart_init();char c='A';while(1){//2.接收一个字节数据readchar();//3.发送一个字节数据sendchar(c);}return 0;}

head.h

#ifndef __GPIO_H__
#define __GPIO_H__
#include "/home/ubuntu/xiangmu/kaifaban_c/02-c/common/include/stm32mp1xx_gpio.h"
#include "/home/ubuntu/xiangmu/kaifaban_c/02-c/common/include/stm32mp1xx_rcc.h"
#include "/home/ubuntu/xiangmu/kaifaban_c/02-c/common/include/stm32mp1xx_uart.h"void uart_init();
char readchar();
void sendchar(char c);
#endif //__GPIO_H__

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/146033.shtml

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

相关文章

【数据结构(二)】稀疏 sparsearray 数组(1)

文章目录 1. 稀疏数组的应用场景1.1. 一个实际的需求1.2. 基本介绍 2. 稀疏数组转换的思路分析3. 稀疏数组的代码实现3.1. 二维数组转稀疏数组3.2. 稀疏数组转二维数组 4. 课后练习 1. 稀疏数组的应用场景 1.1. 一个实际的需求 问题&#xff1a;     编写的五子棋程序中&…

基于nodejs+express+knex+mysql搭建一个后台服务

前言 首先&#xff0c;我们对nodejs、express、knex、mysql进行说明&#xff1a; Node.js&#xff1a;Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。express&#xff1a;Node.js web application framework 基于nodejs的web应用框架Knex&#xff1a;SQL Query Buil…

ES Kibana 安装

ES & Kibana 本文基于Docker安装部署使用 Kibana的版本和ElasticSearch的版本&#xff0c;以及IK分词器的版本一一对应 Kibana 安装 安装Kibana # 创建网络 [rootiZ2zeg7mctvft5renx1qvbZ ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway …

UE5 - ArchvizExplorer - 数字孪生城市模板 -学习笔记

1、学习资料 https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://karldetroit.com/archviz-explorer-documentation/ 官网下载的是一个简单版&#xff0c;需要下载扩展&#xff0c;并拷贝到项目录下&#xff0c;才有完整版 https://drive.googl…

力扣104. 二叉树的最大深度(java,DFS,BFS解法)

Problem: 104. 二叉树的最大深度 文章目录 思路和解法复杂度Code 思路和解法 DFS 递归处理&#xff0c;退出条件为节点为空&#xff0c;归的过程每次取出当前节点左右子树的最大深度加一 BFS 经典的借助一个队列实现的BFS&#xff0c;用一个变量记录当前的最大层数&#xff0c…

Python集成学习和随机森林算法

大家好&#xff0c;机器学习模型已经成为多个行业决策过程中的重要组成部分&#xff0c;然而在处理嘈杂或多样化的数据集时&#xff0c;它们往往会遇到困难&#xff0c;这就是集成学习&#xff08;Ensemble Learning&#xff09;发挥作用的地方。 本文将揭示集成学习的奥秘&am…

指针详解【C语言】

1第一步&#xff1a; 学生 *pstu; 这里学生是类型*是解地址 pstu是地址容器语法里 学生 学生1&#xff1b;就会开辟内存。 这里【学生1】和 【*pstu】等效那这里【pstu】是带类型的指针容器*pstu是解地址&#xff0c;还原出类型对象。这里【*】只是解地址的操作符【pstu】…

组合式API_模板引用

虽然 Vue 的声明性渲染模型为你抽象了大部分对 DOM 的直接操作&#xff0c;但在某些情况下&#xff0c;我们仍然需要直接访问底层 DOM 元素。要实现这一点&#xff0c;我们可以使用特殊的 ref attribute&#xff0c;组合式API的实现更为简洁 选项式API_模板引用 <template…

交易者最看重什么?anzo Capital这点最重要!

交易者最看重什么&#xff1f;有人会说技术&#xff0c;有人会说交易策略&#xff0c;有人会说盈利&#xff0c;但anzo Capital认为Vishal 最看重的应该是眼睛吧&#xff01; 29岁的Vishal Agraval在9年前因某种原因失去了视力&#xff0c;然而&#xff0c;他的失明并未能阻…

python文件读写练习题--随机出10套试卷

要求就是&#xff1a;10套试卷题目顺序不同&#xff0c;答案顺序不同 import random import os city {河北省:石家庄市,山西省:太原市,辽宁省:沈阳市,吉林省:长春市,黑龙江省:哈尔滨市,江苏省:南京市,浙江省:杭州市,安徽省:合肥市,福建省:福州市,江西省:南昌市}#在当前路径下…

【C语言从入门到放弃 7】内存管理和命令行参数详解

在C语言中&#xff0c;内存管理和命令行参数处理是非常重要的技术&#xff0c;它们直接关系到程序的性能和灵活性。本文将深入探讨C语言中的内存管理和命令行参数处理&#xff0c;并提供相关示例代码。 内存管理 1.内存分配与释放 在C语言中&#xff0c;我们可以使用malloc函…

Zookeeper Java 开发,自定义分布式锁示例

文章目录 一、概述二、导入依赖包三、创建锁的过程3.1 通过 create 创建节点信息3.2 AsyncCallback.StringCallback 回调函数3.3 AsyncCallback.Children2Callback 的回调函数3.4 Watcher 的回调函数 四、完整示例4.1 完整分布式锁代码4.2 测试类 如果您还没有安装Zookeeper请看…

切换阿里云ES方式及故障应急处理方案

一、阿里云es服务相关问题及答解 1.1 ES7.10扩容节点时间 增加节点数量需要节点拉起和数据Rebalance两步,拉起时间7.16及以上的新版本大概10分钟以内,7.16以前大概一小时,数据迁移的时间就看数据量了,一般整体在半小时以内 (需进行相关测试验证) 1.2 ES7.10扩容数据节点…

在 Node.js 中发出 HTTP 请求的 5 种方法

在 Node.js 中发出 HTTP 请求的 5 种方法 学习如何在 Node.js 中发出 HTTP 请求可能会让人感到不知所措&#xff0c;因为有数十个可用的库&#xff0c;每个解决方案都声称比上一个更高效。一些库提供跨平台支持&#xff0c;而另一些库则关注捆绑包大小或开发人员体验。 在这篇…

云轴科技ZStack信创云平台支撑长江航务管理局35套航运管理系统

信创是数字中国建设的重要组成部分&#xff0c;也是数字经济发展的关键推动力量。作为云基础软件企业&#xff0c;云轴科技ZStack产品矩阵全面覆盖数据中心云基础设施&#xff0c;ZStack信创云首批通过可信云《一云多芯IaaS平台能力要求》先进级&#xff0c;是其中唯一兼容四种…

二百零三、Flume——Flume实时采集数据频率为1s的高频率Kafka数据直接写入ODS层表的HDFS文件路径下

一、目的 在离线数仓中&#xff0c;需要用Flume去采集Kafka中的数据&#xff0c;然后写入HDFS中。 由于每种数据类型的频率、数据大小、数据规模不同&#xff0c;因此每种数据的采集需要不同的Flume配置文件。玩了几天Flume&#xff0c;感觉Flume的使用难点就是配置文件 二、…

AOF是什么?

目录 一、AOF是什么&#xff1f; 二、使用AOF 三、命令写入 四、重写机制 4.1 触发AOF 4.2 AOF执行流程 一、AOF是什么&#xff1f; AOF是Append Only File&#xff0c;是Redis中实现持久化的一种方式。以独⽴⽇志的⽅式记录每次命令&#xff0c;重启时再重新执⾏ AOF ⽂件中的…

小程序富文本图片大小问题

文章目录 概要uniapp小程序情况解决方法及完整示例 概要 在小程序使用富文本或者在nuiapp&#xff08;小程序的&#xff09;使用富文本都会转为 <rich-text nodes"<p class"p class">内容</p>”></rich-text>如果是这种情况的话在css…

自动驾驶-BEV感知综述

BEV感知综述 随着自动驾驶传感器配置多模态化、多源化&#xff0c;将多源信息在unified View下表达变得更加关键。BEV视角下构建的local map对于多源信息融合及理解更加直观简洁&#xff0c;同时对于后续规划控制模块任务的开展也更为方便。BEV感知的核心问题是&#xff1a; …

飞书开发学习笔记(八)-开发飞书小程序Demo

飞书开发学习笔记(八)-开发飞书小程序Demo 一.小程序开发概述 1.1 小程序开发概述 飞书开发文档中查看&#xff1a;小程序开发概述 飞书小程序是指可以运行在飞书客户端中的小程序&#xff0c;小程序的一套代码可以适配 Android、iOS、PC 多平台&#xff0c;且用户体验与飞书…