4.15 day6 ARM

uart.c

#include "uart4.h"
void uart4_config()
{RCC->MP_AHB4ENSETR |= (0X1 << 6);//GRCC->MP_AHB4ENSETR |= (0X1 << 1);//BRCC->MP_APB1ENSETR |= (0X1 << 16);//UART4
//管脚复用GPIOG->MODER  &= (~(0X3 << 22));GPIOG->MODER |= (0X2 << 22);GPIOB->MODER &= (~(0X3 << 4));GPIOB->MODER |= (0X2 << 4);GPIOG->AFRH &= (~(0XF << 12));//UART4_TXGPIOG->AFRH |= (0X6 << 12);GPIOB->AFRL &= (~(0XF << 8));//UART4_RXGPIOB->AFRL |= (0X8 << 8);//USART设置USART4->CR1 &= (~(0X1));//使能禁用USART4->CR1 &= (~(0X1 << 28));//设置数据位USART4->CR1 &= (~(0X1 << 12));USART4->CR1 &= (~(0x1 << 15));//设置过采样倍数USART4->CR1 &= (~(0x1 << 10));//设置无奇偶校验位USART4->CR1 |= (0X1 << 3);//发送器使能位USART4->CR1 |= (0X1 << 2);//接收器使能位USART4->CR2 &= (~(0X1 << 12));USART4->BRR = (0X22B);USART4->PRESC &= (~(0XF));//设置不分频USART4->CR1 |= (0X1 << 0);//串口工作使能位}void putchar(char dat)
{while (!(USART4->ISR & (0X1 << 7)));USART4->TDR = dat;while (!(USART4->ISR & (0X1 << 6)));}char getchar()
{while (!(USART4->ISR & (0X1 << 5)));return USART4->RDR;}void puts(char *a)
{int i=0;while (a[i] != '\0'){putchar(a[i]);i++;}putchar('\n');putchar('\r');
}char * gets(char *b)
{int i=0;for(;(b[i]=getchar()) != '\r';i++){putchar(b[i]);}putchar('\r');putchar('\n');b[i]='\0';//  for (int i = 0; i < 128; i++)// {//     b[i] = getchar(); // 将接收到的字符放入str中//     putchar(b[i]); // 将接收到的字符串发送回串口调试助手//     if (b[i] == '\r') // 如果接收到了换行符//     {//         putchar('\n'); // 将接收到的字符串发送回串口调试助手//         b[i+1] = '\0';//         break;//     }return b;
}

uart.h

#ifndef  __UART4_H__
#define __UART4_H__
#include  "stm32mp1xx_gpio.h" 
#include  "stm32mp1xx_rcc.h" 
#include  "stm32mp1xx_uart.h" void uart4_config();
void putchar(char dat);
char getchar();
char * gets(char *b);
void puts(char *a);#endif

main.c

#include "uart4.h"int main()
{char dat[128];while(1){gets(dat);puts(dat);}return 0;}

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

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

相关文章

pnpm 使用 workspace 报错 ERR_INVALID_THIS

有时候真的感觉如果有一个老师指路&#xff0c;那么遇到的坑真的会少很多。 错误示例&#xff1a; GET https://registry.npmjs.org/rollup%2Fplugin-typescript error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.原因是什么&#xff1f;原因就是 pnpm 的…

Python数据容器(一)

一.数据容器入门 1.Python中的数据容器&#xff1a;一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为1个元素&#xff0c;每一个元素&#xff0c;可以是任意类型的数据&#xff0c;如字符串、数字、布尔等。 2.数据容器根据特点的不同&#xff0c;如&#…

Python基于flask的豆瓣电影分析可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

spring02:DI(依赖注入)

spring02&#xff1a;DI&#xff08;依赖注入&#xff09; 文章目录 spring02&#xff1a;DI&#xff08;依赖注入&#xff09;前言&#xff1a;一、构造器注入&#xff08;constructor&#xff09;二、set注入&#xff1a;分析&#xff1a; 1. Student类&#xff1a;2. Addres…

Qt教程3-Ubuntu(x86_64)上配置arm64(aarch64)交叉编译环境及QT编译arm64架构工程

汇创慧玩 写在前面1. 查看系统架构相关指令2. ARM64交叉编译器环境搭建3. Qt编译arm64环境搭建4. 配置 Qt的本地aarch64交叉编译器5. 工程建立及编译验证 写在前面 苦辣酸甜时光八载&#xff0c;春夏秋冬志此一生 Qt简介&#xff1a; Qt&#xff08;官方发音 [kju:t]&#xff…

zookeeper分布式应用程序协调服务+消息中间件kafka分布式数据处理平台

一、zookeeper基本介绍 1.1 zookeeper的概念 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目。 是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、…

Redis实现延迟任务的几种方案

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1.前言 2.Redis如何实现延迟任务&#xff1f; 3.代码实现 3.1. 过期键通知事…

osg渲染过程

目录 1、渲染最简单代码 2、详解run方法 3、详细过程 4、回调函数 5、Node Visitor 1、渲染最简单代码 2、详解run方法 3、详细过程 3.1 advance()方法 进行帧计数 3.2 eventTraversal() eventTraversal()响应用户操作,eventTraversal()遍历的是事件队列&#xff0c;而…

力扣LeetCode138. 复制带随机指针的链表 两种解法(C语言实现)

目录 题目链接 题目分析 题目定位&#xff1a; 解题思路 解题思路1&#xff08;粗暴但是复杂度高&#xff09; 解题思路2&#xff08;巧妙并且复杂度低&#xff09; 题目链接 138. 复制带随机指针的链表https://leetcode-cn.com/problems/copy-list-with-random-pointer/ …

SpringBoot的旅游管理系统+论文+ppt+免费远程调试

项目介绍: 基于SpringBoot旅游网站 旅游管理系统 本旅游管理系统采用的数据库是Mysql&#xff0c;使用SpringBoot框架开发。在设计过程中&#xff0c;充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 &#xff08;1&…

QQ 邮箱使用 SMTP 发送邮件报错:550 The From header is missing or invalid

文章目录 场景描述问题排查根据提示查看原因查看封装的 message 个人简介 场景描述 QQ 邮箱使用 SMTP 发送邮件报错&#xff1a;550 The From header is missing or invalid&#xff1a; 失败原因&#xff1a;(550, bThe "From" header is missing or invalid. Ple…

AI大模型探索之路-应用篇12:AI大模型应用之向量数据库选型

目录 前言 一、什么是向量数据库&#xff1f; 二、向量数据库的应用场景 1. 图像检索 2. 推荐系统 3. 自然语言处理 三、向量数据库在AI大模型中的应用 1. 训练数据的索引和检索 2. 特征存储和管理 3. 模型中间结果的存储 4. 长上下文的记录和检索 5. 本地知识库的构…

9. Spring Boot 日志文件

本篇文章源码位置延续上个章节&#xff1a;SpringBoot_demo 本篇文章内容源码位于上述地址的com/chenshu/springboot_demo/logging包下 1. 日志的作用 发现和定位问题&#xff1a; 日志是程序的重要组成部分&#xff0c;它在系统、程序出现错误或异常时提供诊断和解决问题的线…

【热门话题】PyTorch:深度学习领域的强大工具

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 PyTorch&#xff1a;深度学习领域的强大工具一、PyTorch概述二、PyTorch核心特性…

Linux:zabbix配置网易邮箱告警(5)

1.开启邮箱的smtp服务 这里我使用网易邮箱&#xff0c;我需要先去开启邮箱的POP3/IMAP/SMTP/Exchange/CardDAV 服务 点击POP3/SMTP/IMAP 然后在这里开启两个服务 我这个已经去扫码添加过了&#xff0c;你点击新加授权码再去扫码发送信息&#xff0c;就可以得到一个授权密码 2.…

Vue2 基础学习-案例实践

数据管理信息的增删改查的实践 主要应用&#xff1a; 数据插值&#xff1a; {{xxx}}双向绑定&#xff1a;v-model点击事件函数&#xff1a;click列表xxx的增删改实现 xxx.push(row) 增加xxx.splice(id,1) 删除 一行{x,y} xxx[id]; 编辑 <!DOCTYPE html> <html la…

关于AG32 MCU的一些奇思妙想

1、AG32VF103的网口是100M还是10M&#xff1f; RE: 都是100M的。 2、用FPGA能不能再仿出一个网口&#xff1f;有些产品用到两个网口。 理论上可以&#xff0c;但是要考虑&#xff0c;一个是cpld实现难度&#xff0c;一个是需要的逻辑单元。因为mac逻辑多&#xff0c;内置的2KL…

JavaEE企业开发新技术5

目录 2.18 综合应用-1 2.19 综合应用-2 2.20 综合应用-3 2.21 综合应用-4 2.22 综合应用-5 Synchronized &#xff1a; 2.18 综合应用-1 反射的高级应用 DAO开发中&#xff0c;实体类对应DAO的实现类中有很多方法的代码具有高度相似性&#xff0c;为了提供代码的复用性,降低…

链表基础3——单链表的逆置

链表的定义 #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; } Node; Node* createNode(int data) { Node* newNode (Node*)malloc(sizeof(Node)); if (!newNode) { return NULL; } newNode->data …

(弟弟14)递归•按顺序打印一个整数的每一位

这里是目录哦 题目代码运行截图递归思路递归停止条件如何实现“按顺序”悟了✨加油&#x1f389; 题目 按顺序打印一个整数的每一位。 代码 #include<stdio.h> void Print(int n) {if (n > 9)//递归停止条件{Print(n / 10);//不断趋近递归停止条件}printf("%d…