7.1作业

news2024/12/25 13:17:09

初始化

  /******rcc章节初始化********/                             |
  //1.使能gpiob组控制器                                     |
  RCC->MP_AHB4ENSETR |=(0X1<<1);                            |
  //2.使能gpiog组控制器                                     |
  RCC->MP_AHB4ENSETR |=(0x1<<6);                            |
  //3.使能uart4组寄存器                                     |
  RCC->MP_APB1ENSETR |=(0X1<<16);                           |
  /******gpio章节初始化********/                            |
  //1.GPIO引脚为PB2和PG11设置为复用功能模式                 |
  GPIOB->MODER &=~(0X3<<4);//先清零                         |
  GPIOB->MODER |=(0X1<<5); //再置1                          |
  GPIOG->MODER &=~(0X3<<22);//先清零                        |
  GPIOG->MODER |=(0X1<<23); //再置1                         |
                                                            |
  //2.设置PB2引脚的复用功能为UART4_RX                       |
  GPIOB->AFRL &=~(0XF<<8);//先清零                          |
  GPIOB->AFRL |=(0X1<<11);//再置1                           |
                                                            |
  //3.设置PG11引脚的复用功能为UART4_TX                      |
  GPIOG->AFRH &=~(0XF<<12);//先清零                         |
  GPIOG->AFRH |=(0X3<<13);//再置1                           |
                                                            |
  /******uart章节初始化********/                            |
  //很多都是ue=0才能设置,所以串口先设置为0                 |
  USART4->CR1 &=~(0X1);                                     |
  //1.设置8位数据位                                         |
  USART4->CR1 &=~(0X1<<28);                                 |
  USART4->CR1 &=~(0X1<<12);                                 |
  //2.设置16倍采样率                                        |
  USART4->CR1 &=~(0X1<<15);                                 |
  //3.设置无校验位                                          |
  USART4->CR1 &=~(0X1<<10);                                 |
  //4.设置发送位使能                                        |
  USART4->CR1 |=(0X1<<3);                                   |
  //5.设置接收位使能                                        |
  USART4->CR1 |=(0X1<<2);                                   |
  //6.设置停止位                                            |
  USART4->CR2 &=~(0X3<<12);                                 |
  //7.设置分频器                                            |
  USART4->PRESC &=~(0XF);                                   |
  //8.设置波特率                                            |
  USART4->BRR &=~(0xffff);                                  |
  USART4->BRR |=0x22b;                                      |
  //9.设置串口使能                                          |
  USART4->CR1 |=(0X1);                                      |
                                                            |
                                                            |

功能函数

                                                  
//  发送一个字符                                  
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 *s)                
{                                                 
                                                  
    while(*s)                                     
    {                                             
        hal_put_char(*s);                         
        s++;                                      
    }                                             
    hal_put_char('\r');                           
    hal_put_char('\n');                           
}                                                 
                                                  
//  接收字符                                      
char hal_get_str()                                
{                                                 
    char a;                                       
    while(!(USART4->ISR&(0x1<<5)));               
    a=USART4->RDR;                                
    return a;                                     
}                                                 
                                                  
//  接收字符串                                    
void hal_get_string()                             
{                                                 
    int i=0;                                      
    char s[100];                                  
    while(1)                                      
    {                                             
        s[i]=hal_get_str();                       
        if(s[i]=='\r')                            
        {                                         
          break;                                  
        }                                         
        hal_put_char(s[i]);                       
        i++;                                      
    }                                             
    s[i]='\0';                                    
    hal_put_char('\r');                           
    hal_put_char('\n');                           
    hal_put_string(s);                            
                                                  
}                                                 
                                                  
                                                  
                                                  
                                                  

实验现象:

字符

字符串

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

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

相关文章

【TB作品】矩阵键盘电话拨号,ATMEGA16单片机,Proteus仿真 atmega16矩阵键盘电话拨号

atmega16矩阵键盘电话拨号 c代码和仿真图&#xff1a; 使用ATmega16实现矩阵键盘电话拨号功能 项目背景 在电子设计和嵌入式系统开发中&#xff0c;矩阵键盘是常见的人机交互方式。它可以实现较多按键的输入&#xff0c;同时节省单片机的I/O资源。结合LCD显示和蜂鸣器&am…

四城联动 | 亚控KingSCADA4.0信创版发布会圆满收官

圆满收官 随着科技的飞速发展&#xff0c;智能制造和工业自动化已成为推动产业升级的重要力量。在这样的背景下&#xff0c;北京亚控科技发展有限公司&#xff08;以下简称“亚控科技”&#xff09;于2024年6月18日至27日&#xff0c;分别在沈阳、大连、长春和哈尔滨四地成功举…

【PYG】Planetoid中边存储的格式,为什么打印前十条边用edge_index[:, :10]

edge_index 是 PyTorch Geometric 中常用的表示图边的张量。它通常是一个形状为 [2, num_edges] 的二维张量&#xff0c;其中 num_edges 表示图中边的数量。每一列表示一条边&#xff0c;包含两个节点的索引。 实际上这是COO存储格式&#xff0c;官方文档里也有写&#xff0c;…

暑假假期规划 离不开宝藏待办计划管理工具

暑假来临&#xff0c;两个月的自由时间&#xff0c;如何过得充实而有意义&#xff0c;成了我最近思考的问题。毕竟&#xff0c;一个合理的假期规划&#xff0c;不仅能让我的假期生活更加丰富多彩&#xff0c;还能为新学期的到来做好充分的准备。 我幻想着在这个暑假里&#xf…

激光雷达数据处理

激光雷达技术以其高精度、高效率的特点&#xff0c;已经成为地表特征获取、地形建模、环境监测等领域的重要工具。掌握激光雷达数据处理技能&#xff0c;不仅可以提升工作效率&#xff0c;还能够有效提高数据的质量和准确性&#xff0c;为决策提供可靠的数据支持。 第一章、激…

【漏洞复现】和丰多媒体信息发布系统 QH.aspx 任意文件上传漏洞

0x01 产品简介 和丰多媒体信息发布系统也称数字标牌&#xff08;Digital Signage&#xff09;&#xff0c;是指通过大屏幕终端显示设备&#xff0c;发布商业、财经和娱乐信息的多媒体专业视听系统&#xff0c;常被称为除纸张媒体、电台、电视、互联网之外的“第五媒体”。该系…

centos 安装zabbix 6.4.16 server client

Zabbix Server 采用源码包部署&#xff0c;数据库采用 MySQL8.0 版本&#xff0c;zabbix-web 使用 nginxphp 来实现。具体信息如下&#xff1a; 软件名 版本 安装方式 Zabbix Server 6.4.16 源码安装 Zabbix Agent 6.4.16 源码安装 MySQL 8.0.28 yum安装 Nginx 1.…

赛氪网:企业竞赛组织平台新选择,一键操作助力赛事成功举办

在数字化时代&#xff0c;传统的赛事报名方式已经逐渐难以满足组织者和参赛者的需求。企业如何寻找一种既方便又高效的赛事报名工具&#xff1f;赛氪网平台凭借其便捷的操作流程、完善的管理功能和技术保障&#xff0c;成为众多企业和高校举办竞赛时的首选。 赛氪网作为一款先…

祝贺《华为战略管理法:DSTE实战体系》被《中国企业家》杂志评为企业家枕边书50本之一(宏观战略类书籍)

祝贺《华为战略管理法&#xff1a;DSTE实战体系》被《中国企业家》杂志评为企业家枕边书50本之一 2024年4月23日&#xff08;周二&#xff09;下午13:00&#xff0c;《中国企业家》杂志如期举办“每天都是读书日”线下活动。 《中国企业家》杂志携手商界大咖共同推选50本枕边书…

算法刷题之路之链表初探(二)Leecode21合并两个有序链表

算法刷题之路之链表初探&#xff08;二&#xff09; 今天来学习的算法题是leecode141环形链表&#xff0c;是一道简单的入门题&#xff0c;话不多说&#xff01;直接上&#xff01; 条件&#xff08;Leecode21&#xff09; 重点&#xff01;&#xff01;&#xff01; 我直接把…

数据结构 - C/C++ - 链表

目录 结构特性 内存布局 结构样式 结构拓展 单链表 结构定义 节点关联 插入节点 删除节点 常见操作 双链表 环链表 结构容器 结构设计 结构特性 线性结构的存储方式 顺序存储 - 数组 链式存储 - 链表 线性结构的链式存储是通过任意的存储单元来存储线性…

yaml文件的介绍-K8S

yaml 文件是我们使用K8S管理应用程序常用的部署方式&#xff0c;它主要是通过一系列键值对组成&#xff0c;键和值使用冒号和空格分隔。以下是对yaml的介绍 首先我们可以使用命令生成一个简单的YAML模版文件 Kubectl run nginx-pod –imagenginx:latest –port80 –dry-runcli…

【MySQL备份】Percona XtraBackup实战篇

目录 1. 前言 2.准备工作 2.1.创建备份目录 2.2.配置/etc/my.cnf文件 2.3.授予root用户BACKUP_ADMIN权限 3.全量备份 4.准备备份 5.数据恢复 6.总结 "实战演练&#xff1a;利用Percona XtraBackup执行MySQL全量备份操作详解" 1. 前言 本文将继续上篇【My…

R语言 | 带P值的相关性热图绘制教程

原文链接&#xff1a;带P值的相关性热图绘制教程 本期教程 往期教程部分内容 **注意&#xff1a;若是在MarkDown格式中无法运行成功&#xff0c;请新建有一个R script文件 ** 一、加载R包 if (!require(corrplot)) install.packages("corrplot") if (!require(Hmi…

Spring Cloud - 项目搭建

1、新建maven项目 新建maven项目&#xff0c;该项目为主项目 1、新建maven项目 2、设置项目类型 3、选择项目原型 4、设置参数 5、等着完成 2、设置项目信息 1、右键&#xff0c;项目属性 2、设置jdk版本 3、选择jdk17 4、修改编译版本 5、右键项目&#xff0c;选择maven->u…

使用zdppy_api+onlyoffice word文档在线共同编辑,附完整的vue3前端代码和python后端代码

参考文档&#xff1a; https://api.onlyoffice.com/zh/editors/basic https://api.onlyoffice.com/zh/editors/coedit 基本的架构思考&#xff1a; 文档表&#xff1a;记录的是文档信息 key&#xff1a;这个key可以标识唯一的一个文档&#xff0c;可以是文档的hash值fileType…

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

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

可视化学习之pytorch可视化工具visdom

文章摘自详解PyTorch可视化工具visdom&#xff08;一&#xff09;-CSDN博客 模型训练过程中需要实时监听并可视化一些数据&#xff0c;如损失值loss&#xff0c;正确率acc等。在tensorflow中&#xff0c;使用的工具为tensorboard&#xff1b; 安装一下试试 1.安装 pip inst…

Vue基础用法

Vue 定义&#xff1a; 是一套前端框架&#xff0c;免除原生JS中的DOM操作&#xff0c;简化书写&#xff0c;基于MVVM&#xff08;Model-View-ViewModel&#xff09;思想&#xff0c;实现数据的双向绑定&#xff0c;将编程的关注点放在数据上。 图来自黑马程序员网课 常用指令&…

MQTT QoS 0, 1, 2

目录 # 开篇 1. 精细MQS TT QoS的行为 1.1 QoS 0: 最多交付一次&#xff08;At Most Once&#xff09; 1.2 QoS 1: 至少交付一次&#xff08;At Least Once&#xff09; 1.3 QoS 2: 只交付一次&#xff08;Exactly Once&#xff09; 1.4 传输过程图示 1.5 总结 2. MQTT…