0701_ARM5
练习:使用usart4
main.c
#include "uart4.h"int main()
{// 初始化 UART4hal_uart4_init();while (1) {// 发送一个字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0;
}
usart4.c
#include "uart4.h"//******引脚PB2读取 PG11写入*****//rcc,gpio,uart,初始化
void hal_uart4_init(){//rcc章节初始化//1.使能GPIOB组控制器RCC->MP_AHB4ENSETR |= (0X1<<1);//2.是能GPIOG组控制器RCC->MP_AHB4ENSETR |= (0X1<<6);//3.是能UART4控制器RCC->MP_APB1ENSETR |= (0x1<<16);//GPIO章节初始化//1.GPIOB_MODE寄存器初始化 设置对应引脚模式功能 复用功能GPIOB->MODER &= ~(0x3<<4); //MODER默认为0xffffffff 先将4,5为清零GPIOB->MODER |= (0x2<<4);//2.GPIOG_MODE寄存器初始化 设置对应引脚模式功能 复用功能GPIOG->MODER &= ~(0x3<<22); GPIOG->MODER |= (0x2<<22);//3.GPIOB_AFRL寄存器设置对应引脚复用功能GPIOB->AFRL &= ~(0x0f<<8);GPIOB->AFRL |= (0x8<<8); //AFRL默认为0x00000000 所以这里直接按位|//4.GPIOG_AFRH寄存器设置对应引脚复用功能GPIOG->AFRH &= ~(0x0f<<12);GPIOG->AFRH |= (0x6<<12); //PG11在AFRH寄存器中//UART章节初始化//1.USART4串口控制寄存器初始化//USART4_CR1初始值为0x00000000//1.8位数据位USART4->CR1 &= ~(0x1<<12);USART4->CR1 &= ~(0x1<<28);//2.16倍采样率USART4->CR1 &= ~(0X1<<15);//3.无校验位USART4->CR1 &= ~(0X1<<10);//4.设置发送和接收使能USART4->CR1 |= (0x6<<1);//USART4_CR2寄存器 设置停止位//USART4_CR2 默认值 0x00000000//5.1个停止位USART4->CR2 &= ~(0X3<<12);//6.设置波特率USART4->BRR = 0X22B;//7.设置串口使能USART4->CR1 |= 0x1;//USART4_PRESC 寄存器设置串口分配//USART4_PRESC初始值位0x00000000//8.不分频USART4->PRESC &= ~(0x0f);}
//发送字符
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 *string){//判断发送数据寄存器是否为空while(*string){//将数据写入寄存器中hal_put_char(*string++);}
}
//接收字符
char hal_get_char(){//判断接收数据是否为空char c=0;while(!(USART4->ISR & (0X1<<5))){}c=USART4->RDR;return c;
}
// 接收字符串
char* hal_get_string(){static char str[128]; // 使用静态变量以保持内容int i = 0;for(i = 0; i < 127; i++){ // 确保有空间存放'\0'str[i] = hal_get_char();if(str[i] == '\n' || str[i]=='\r'){ // 也考虑回车作为结束符break;}}str[i] = '\0'; // 确保字符串以null结尾return str;
}
usart4.h
#ifndef __UART4_H__
#define __UART4_H__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_uart.h"
//rcc,gpio,uart,初始化
void hal_uart4_init();
//发送一个字符
void hal_put_char(const char str);
//发送一个字符串
void hal_put_string(const char *string);
//接收一个字符串
char hal_get_char();
//接收一个字符串
char *hal_get_string();#endif
相关文章:
0701_ARM5
练习:使用usart4 main.c #include "uart4.h"int main() {// 初始化 UART4hal_uart4_init();while (1) {// 发送一个字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0; } usart4.c #include "uart4.h"//**…...

Python用户宝典:了解并实现遗传算法
遗传算法是一种基于自然选择的技术,用于解决复杂问题。由于问题很复杂,遗传算法(而不是其他方法)被用来得出解决问题的合理方案。本文介绍遗传算法的基础知识以及如何用Python来实现。 遗传算法的要素 适应度函数 适应度函数衡…...
如何使用深度学习进行实时目标检测:速度与精度的双重挑战
如何使用深度学习进行实时目标检测:速度与精度的双重挑战 目标检测作为计算机视觉领域的核心任务之一,其目的是在图像或视频中识别和定位感兴趣的对象。随着深度学习技术的发展,基于深度学习的目标检测算法在实时性、准确性方面取得了显著进…...

创新引领,构筑产业新高地
在数字经济的浪潮中,成都树莓集团以创新驱动为核心,通过整合行业资源、优化服务、培养数字产业人才等措施,致力于打造产业高地,推动地方经济的高质量发展。 一、创新驱动,引领产业发展 1、引入新技术、新模式…...
npm,yarn清楚缓存
1.运行以下命令来清理npm缓存: npm cache clean --force或者运行以下命令清理Yarn缓存: yarn cache clean2.删除 node_modules 和锁文件: 删除 node_modules 目录和 package-lock.json 或 yarn.lock 文件,然后重新安装依赖 rm …...
httpclient访问https请求报错处理
C#通过httpclient调用https请求时,报错 错误信息为:The remote certificate is invalid according to the validation procedure 该错误是由于使用httpclient访问不合法的https站点导致出现的异常。 处理代码如下 public static string HttpPostWithT…...
ffmpeg + opencv 把摄像头画面保存为mp4文件(Ubuntu24.04)
参考链接 ffmpeg opencv 把摄像头画面保存为mp4文件_ffmpeg转化摄像头mp4-CSDN博客 调试环境 Ubuntu24.04 ffmpeg 6.1.1 opencv 4.6 g 13.2.0 C源码 #include <iostream> #include <sys/time.h> #include <string>#ifdef __cplusplus extern "…...

Fastapi 项目第二天首次访问时数据库连接报错问题Can‘t connect to MySQL server
问题描述 Fastapi 项目使用 sqlalchemy 连接的mysql 数据库,每次第二天首次访问数据库相关操作,都会报错:sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, “Can’t connect to MySQL server on ‘x.x.x.x’ ([Err…...

尚硅谷k8s 2
p54-56 k8s核心实战 service服务发现 Service:将一组 Pods 公开为网络服务的抽象方法。 #暴露Deploy,暴露deploy会出现在svc kubectl expose deployment my-dep --port8000 --target-port80#使用标签检索Pod kubectl get pod -l appmy-depapiVersion: v1 kind: Service metad…...

机器学习---线性回归
1、线性回归 例如:对于一个房子的价格,其影响因素有很多,例如房子的面积、房子的卧室数量、房子的卫生间数量等等都会影响房子的价格。这些影响因子不妨用 x i x_{i} xi表示,那么房价 y y y可以用如下公式表示: y …...
字符串去重、集合遍历 题目
题目 JAVA38 字符串去重描述输入描述:输出描述: 示例:分析:代码:大佬代码: JAVA39 集合遍历描述输入描述:输出描述: 示例:分析:代码: JAVA38 字符串去重 描述 从键盘获取…...
SQL窗口函数详解
详细说明在sql中窗口函数是什么,为什么需要窗口函数,有普通的聚合函数了那窗口函数的意义在哪,窗口函数的执行逻辑是什么,over中的字句是如何使用和理解的(是不是句句戳到你的痛点,哼哼~&#x…...
如何用Java写一个整理Java方法调用关系网络的程序
大家好,我是猿码叔叔,一位 Java 语言工作者,也是一位算法学习刚入门的小学生。很久没有为大家带来干货了。 最近遇到了一个问题,大致是这样的:如果给你一个 java 方法,如何找到有哪些菜单在使用。我的第一想…...
基于STM32设计的管道有害气体检测装置(ESP8266局域网)176
基于STM32设计的管道有害气体检测装置(176) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成【3】ESP8266模块配置【4】上位机开发思路【5】项目模块划分【6】LCD显示屏界面布局【7】上位机界面布局1.2 项目功能需求1.3 项目开发背景1.4 开发工具的选择1…...
iCloud照片库全指南:云端存储与智能管理
iCloud照片库全指南:云端存储与智能管理 在数字化时代,照片和视频成为了我们生活中不可或缺的一部分。随着手机摄像头质量的提升,我们记录生活点滴的方式也越来越丰富。然而,这也带来了一个问题:如何有效管理和存储日…...

IDEA中使用Maven打包及碰到的问题
1. 项目打包 IDEA中,maven打包的方式有两种,分别是 install 和 package ,他们的区别如下: install 方式 install 打包时做了两件事,① 将项目打包成 jar 或者 war,打包结果存放在项目的 target 目录下。…...

TreeMap、HashMap 和 LinkedHashMap 的区别
TreeMap、HashMap 和 LinkedHashMap 的区别 1、HashMap2、LinkedHashMap3、TreeMap4、总结 💖The Begin💖点点关注,收藏不迷路💖 在 Java 中,TreeMap、HashMap 和 LinkedHashMap 是三种常用的集合类,它们在…...
【跟我学K8S】45天入门到熟练详细学习计划
目录 一、什么是K8S 核心功能 架构组件 使用场景 二、入门到熟练的学习计划 第一周:K8s基础和概念 第二周:核心对象和网络 第三周:进阶使用和管理 第四周:CI/CD集成和监控 第五周:实战模拟和案例分析 第六周…...

ubuntu下载Nginx
一、Nginx下载安装(Ubuntu系统) 1.nginx下载 sudo apt-get install nginx2.nginx启动 启动命令 sudo nginx重新编译(每次更改完nginx配置文件后运行): sudo nginx -s reload3.测试nginx是否启动成功 打开浏览器访问本机80端口…...
【区分vue2和vue3下的element UI Dialog 对话框组件,分别详细介绍属性,事件,方法如何使用,并举例】
在 Vue 2 和 Vue 3 中,Element UI(针对 Vue 2)和 Element Plus(针对 Vue 3)提供了 Dialog 对话框组件,用于在页面中显示模态对话框。这两个库中的 Dialog 组件在属性、事件和方法的使用上有所相似ÿ…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...