arm day 7
完成字符串收发函数的封装并且验证现象,一个字符串发送接受后会有‘\n’ '\r'
src/uart.c
#include"uart.h"void uart4_init()
{//设置UART4的RCc时钟使能//RCC_MP_APB1ENSETR[16]->1RCC->MP_APB1ENSETR |= (0x1<<16);//设置GPIOB和GPIOG的时钟使能//RCC_MP_AHB4ENSETR[6]->1//RCC_MP_AHB4ENSETR[1]->1RCC->MP_AHB4ENSETR |= (0x1<<1);RCC->MP_AHB4ENSETR |= (0X1<<6);//设置PG11和PB2功能复用为UART4功能//PG11//GPIOG_MODER[23:22]->10GPIOG->MODER &= (~(0X3<<22));GPIOG->MODER |= (0X2<<22);//GPIOG_AFRH[15:12]->0110 GPIOG->AFRH &= (~(0xf<<12));GPIOG->AFRH |= (0x6<<12);//PB2//GPIOB_MODER[5:4]->10//GPIOB_AFRL[11:8]->1000GPIOB->MODER &= (~(0x3<<4));GPIOB->MODER |= (0X2<<4);GPIOB->AFRL &= (~(0xF<<8));GPIOB->AFRL |= (0x8<<8);//禁用串口USART4->CR1 &=(~0x1);//设置数据8个数据位 CR1[28]->0 CR1[12]-》0USART4->CR1 &= (~(0X1<<28));USART4->CR1 &= (~(0X1<<12));//设置没有校验位CR1[10]->0USART4->CR1 &= (~(0X1<<10));//设置1个停止位CR2[13:12]->00USART4->CR2 &= (~(0x3<<12));//设置16倍采样 CR1[15]->0USART4->CR1 &= (~(0X1<<15));//设置波特率为115200 BRR=0X22BUSART4->BRR |= 0X22B;//设置1分频 PRESC[3:0]->0000USART4->PRESC &= (~(0XF));//使能发送器 CR1[3]->1USART4->CR1 |= (0X1<<3);//使能接收器 CR1[2]->1USART4->CR1 |= (0X1<<2);//使能串口 CR1[0]->1USART4->CR1 |= (0X1);}
char buffer[50];
//串口发送一个字符
void putchar(char c)
{//判断发送数据寄存器有没有数据,没有数据时可以发送while(!(USART4->ISR&(0X1<<7)));USART4->TDR=c;//将要发送的数据保存在发送寄存器中while(!(USART4->ISR&(0X1<<6)));//数据传输完成,函数结束
}
//串口接受一个字符
char getchar()
{char c;//判断是否有数据准备好while(!(USART4->ISR&(0X1<<5)));//数据传输完成,函数结束c=USART4->RDR;return c;}
//串口发送一个字符串
void puts(char *s)
{//就是一个一个字符发while(*s){putchar(*s++);}putchar('\n');//换行putchar('\r');//回车
}//串口接收一个字符串
char *gets()
{unsigned int i;for(i=0;i<49;i++){//1.接收一个字符放在buffer缓冲区中buffer[i] = getchar();//2.接收一个字符回显一个字符putchar(buffer[i]);//enter---->'\r'if(buffer[i] == '\r')break;}buffer[i] = '\0';//字符串以'\0'结尾putchar('\n');//字符串输入结束后,让光标回到下一行return buffer;
}
main.c
#include "uart.h"int main()
{char c;char *s;uart4_init();//串口初始化while(1){//接收字符串s=gets();puts(s);//发送字符串}return 0;
}
include/uart.h
#ifndef __UART_H__
#define __UART_H__
#include"stm32mp1xx_uart.h"
#include"stm32mp1xx_gpio.h"
#include"stm32mp1xx_rcc.h"void uart4_init();
void putchar(char c);
char getchar();
void puts(char *s);
char *gets();
#endif
相关文章:
arm day 7
完成字符串收发函数的封装并且验证现象,一个字符串发送接受后会有‘\n’ \r src/uart.c #include"uart.h"void uart4_init() {//设置UART4的RCc时钟使能//RCC_MP_APB1ENSETR[16]->1RCC->MP_APB1ENSETR | (0x1<<16);//设置GPIOB和GPIOG的时钟…...
Java基础面试-面向对象
什么是面向对象? 对比面向过程,是两种不同的处理问题角度 面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象),及各自需要做什么 比如洗衣机洗衣服 面向过程会将任务拆解成一系…...
GCC vs. G++:C 与 C++ 编译器的差异和比较
本文将介绍 GCC(GNU Compiler Collection)和 G 编译器的区别,并对它们在 C 和 C 程序开发中的特性和用法进行比较和总结。 引言 在 C 和 C 程序开发中,选择合适的编译器是至关重要的。GCC(GNU Compiler Collection&a…...
MAC m系列docker login报错
错误:ERROR: failed to solve: XXX error getting credentials - err: exit status 1, out: 解决: vi ~/.docker/config.jsonzsxzsx [15时55分55秒] [~] { {"auths": {"harbor-g42c.corp.matrx.team": {"auth": "…...
Redis通用指令和五大基本数据类型常用指令总结
通用指令 keys parttern 查询key (parttern即通配符,不是正则表达式,例如 keys a? 匹配以a开头的长度为2的key) del key 删除key exists key 获取key是否存在 type key 获取key的类型 expire key seconds 为指定key设置有效期,单位秒 …...
uCharts常用图表组件demo
带渐变阴影的曲线图 <view class"charts-box"><qiun-data-charts type"area" :opts"opts" :chartData"chartData" :ontouch"true":background"rgba(256,256,256,0)" /> </view>data(){return{…...
VNC:Timed out waiting for a response from the computer
VNC的服务端使用的是TigerVNC,客户端使用的是RealVNC TigerVNC按其他博客配好后,防火墙ip什么的都配了,vnc客户端怎么连都是超时。 这里建议大家可以尝试一下重启服务器。我的是CentOS的 shutdown -r now 配了2天,最后服务器重启…...
Kotlin 协程 知识点
Android 上的 Kotlin 协程 | Android Developers (google.cn) 官方网址 1.什么是协程? 我觉得协程就是kotlin中一种优雅的实现异步请求 协程(Coroutines)是一种轻量级的并发编程概念,旨在简化异步编程和并发任务的处理。它是…...
简单大方的自我介绍 PPT 格式
自我介绍是展示自己的机会,同时也是展现自信和魅力的重要时刻。通过简单大方的PPT格式,可以更好地展示自己的个性和才华。下面是一些建议,帮助你在自我介绍中展现自信和魅力。 1. 打造简洁而有吸引力的PPT布局: - 选择简洁大方的背…...
panads操作excel
panads简介 pandas是基于Numpy创建的Python包,内置了大量标准函数,能够高效地解决数据分析数据处理和分析任务,pandas支持多种文件的操作,比如Excel,csv,json,txt 文件等,读取文件之…...
【MySQL】联合查询、子查询、合并查询
这里提供了三个表: 表1: mysql> select * from class; -------------- | id | name | -------------- | 1 | 一班 | | 2 | 二班 | | 3 | 三班 | -------------- 3 rows in set (0.01 sec) 表2: mysql> select * fro…...
小程序中如何设置所服务地区的时区
在全球化的背景下,小程序除了在中国使用外,还为海外的华人地区提供服务。例如我们采云小程序为泰国、阿根廷、缅甸等国家的商家就提供过微信小程序。这些商家开通小程序,为本地的华人提供服务。但通常小程序的开发者/服务商位于中国ÿ…...
Linux环境安装mysql8.0
1个人习惯我喜欢给软件安装在/use/local下,我使用的finalshell软件,直接手动新建一个文件夹名字为mysql 2下载mysql wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz 3解压文件 tar -xvf mysql-8.0.2…...
STM32_DMA_多通道采集ADC出现错位现象
STM32_DMA_多通道采集ADC出现错位现象 问题描述: adcSensorValue[0],adcSensorValue[3],adcSensorValue[6]… //存储通道1数据 adcSensorValue[1],adcSensorValue[4],adcSensorValue[7]… //存储通道2数据 adcSensorValue[2],adcSensorValue[5],adcSensorValue[8]……...
Linux内存管理 (2):memblock 子系统的建立
前一篇:Linux内存管理 (1):内核镜像映射临时页表的建立 文章目录 1. 前言2. 分析背景3. memblock 简介3.1 memblock 数据结构3.2 memblock 接口 4. memblock 的构建过程 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者…...
创新学习方式,电大搜题助您迈向成功之路
近年来,随着信息技术的发展,互联网在教育领域发挥的作用越来越显著。贵州开放大学作为国内首家电视大学,一直致力于创新教学模式,帮助学生更好地获取知识。在学习过程中,学生常常遇到疑难问题,而解决这些问…...
Mybatis整理
Mybatis 定义 Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,加载驱动、创建连接、创建statement等繁杂的过程,开发者开发时只需要关注如何编写SQL语句,可以严格控制sql执行性能,灵…...
pytorch定义datase多次重复采样
有的时候训练需要对样本重复抽样为一个batch,可以按如下格式定义: class TrainLoader(Dataset):def __init__(self, fns, repeat1):super(TrainLoader, self).__init__()self.length len(fns) # 数据数量self.repeat repeat # 数据重复次数def __getitem__(self,…...
自动化测试 —— Pytest fixture及conftest详解!
前言 fixture是在测试函数运行前后,由pytest执行的外壳函数。fixture中的代码可以定制,满足多变的测试需求,包括定义传入测试中的数据集、配置测试前系统的初始状态、为批量测试提供数据源等等。fixture是pytest的精髓所在,类似u…...
Nginx解析漏洞
常见的解析漏洞: IIS 5.x/6.0解析漏洞 IIS 7.0/IIS 7.5/ Nginx <0.8.3畸形解析漏洞 Nginx <8.03 空字节代码执行漏洞 Apache解析漏洞 Nginx文件解析漏洞 对于任意文件名,例如:cd.jpg在后面添加/x.php后,即可将文件作为php解析。 原理…...
3个核心优势:BG3 Mod Manager的模组管理创新特性
3个核心优势:BG3 Mod Manager的模组管理创新特性 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 博德之门3(Baldurs Gate 3&…...
实战分享:如何用本地替换和插桩调试搞定Kasada最新版x-kpsdk-cd环境检测
逆向工程实战:Kasada最新版x-kpsdk-cd环境检测的深度调试策略 在当今Web安全防护体系中,Kasada作为新一代反自动化攻击解决方案,其x-kpsdk-cd机制通过动态加密和运行时环境检测构建了强大的防御层。面对从280位扩展到294位的加密数组和Proxy保…...
FastAPI日志配置终极指南:10个简单步骤实现生产级日志管理
FastAPI日志配置终极指南:10个简单步骤实现生产级日志管理 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI作为现代…...
Phi-4-mini-reasoning效果展示:含单位换算、科学计数法的复合型数学题求解
Phi-4-mini-reasoning效果展示:含单位换算、科学计数法的复合型数学题求解 1. 模型能力概览 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,特别擅长处理需要多步逻辑推导的问题。与通用聊天模型不同,它更专注于"问题输入→…...
10个C语言开源项目解析与学习指南
1. 10个值得学习的C语言开源项目解析 作为一名在嵌入式领域摸爬滚打多年的开发者,我深知阅读优秀开源代码对提升编程能力的重要性。今天要分享的这10个C语言项目,每一个都是精炼而实用的典范,特别适合想要深入理解系统编程、网络协议和底层实…...
Flutter鸿蒙开发环境:从零到一,手把手解决环境配置与编译难题
1. 环境准备:搭建Flutter鸿蒙开发的基石 第一次接触Flutter鸿蒙开发时,环境配置就像盖房子的地基,看似简单却最容易踩坑。我在Windows系统上反复折腾了三天才搞定所有环境,这里把血泪经验总结成保姆级教程。首先需要明确的是&…...
Win11更新后Wifi图标消失?别急着重装系统,先试试这个官方驱动修复法
Win11更新后Wifi图标消失?三步精准定位官方驱动修复方案 刚更新完Windows 11系统,正准备继续手头的工作,突然发现任务栏右下角的Wifi图标不翼而飞。尝试重启电脑、重置网络设置,甚至检查了各种服务状态,问题依旧存在。…...
Figma设计稿秒变Vue代码?实测Trae AI的“图像转代码”功能,还原度到底有多高
Figma设计稿秒变Vue代码?实测Trae AI的"图像转代码"功能还原度与实战应用 设计师与前端开发者的协作痛点由来已久。当Figma画布上精美的界面设计需要转化为实际可运行的代码时,往往意味着数小时的像素级测量、CSS编写和响应式调试。这种设计到…...
局域网内Windows时间同步配置
本文详细介绍了如何配置NTP服务器和工作站计算机进行时间同步,包括在服务器上启用NTP服务,调整同步设置,以及在海康威视录像机上的应用。同时提醒注意防火墙配置问题。 一、配置NTP服务器 1、在局域网内找一台时间可靠的计算机或服务器 做为N…...
Sulpho-Methyltetrazine-NHS ester,磺化甲基四嗪-琥珀酰亚胺酯的结构特点与功能
Sulpho-Methyltetrazine-NHS ester 是一种结合了磺酸基团、甲基四嗪和 NHS 酯三大功能模块的化学试剂,在生物化学和药物研发等领域具有广泛应用。以下是对其详细介绍:一、基本信息英文名称:Sulpho-Methyltetrazine-NHS ester(或 S…...
