4.15 day6 ARM

devtools/2024/9/24 14:23:36/

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.ppmy.cn/devtools/8767.html

相关文章

网络安全之反弹Shell

网络安全之反弹Shell 在网络安全和渗透测试领域&#xff0c;“正向Shell”&#xff08;Forward Shell&#xff09;和"反向Shell"&#xff08;Reverse Shell&#xff09;是两种常用的技术手段&#xff0c;用于建立远程访问目标计算机的会话。这两种技术都可以让攻击者…

鸿蒙开发实例:【配置OpenHarmony SDK】

配置OpenHarmony SDK 在设置OpenHarmony应用开发环境时&#xff0c;需要开发者在DevEco Studio中配置对应的SDK信息。 说明&#xff1a; 请注意&#xff0c;OpenHarmony SDK版本精简了部分工具链&#xff0c;因此不适用于HarmonyOS应用开发。 前提条件 已下载并安装好DevEco …

react ui design

react ui design 欢迎使用Markdown编辑器 欢迎使用Markdown编辑器 yarn create vite my-react-app --template react-tsnpx storybooklatest inityarn add --dev commitlint/{cli,config-conventional}echo "export default { extends: [commitlint/config-conventional]…

Gitlab相关,【推送项目】

推送现有文件夹 cd existing_folder git init git remote add origin git10.200.5.138:taps/archetech.git git add . git commit -m "Initial commit"git pull -u origin master另外 git branch -b new_branch //创建本地分支并切换 git branch //查看本地分支 …

NTP授时服务器(GPS授时器)在DCS系统应用

NTP授时服务器&#xff08;GPS授时器&#xff09;在DCS系统应用 前言 随着计算机和网络通信技术的飞速发展&#xff0c;各行业自动化系统数字化、网络化的时代已经到来。这一方面为各控制和信息系统之间的数据交换、分析和应用提供了更好的平台、另一方面对各种实时和历史数据…

Vue项目学习(一)-SQL闯关

Hello , 我是小恒不会java。今天来阅读一个Vue纯前端项目--SQL在线闯关 进步的方法除了文档书籍视频&#xff0c;学会阅读源代码&#xff0c;从代码中学会解决需求的方法也是必要的 已部署完成&#xff0c;在线体验&#xff1a;http://sql.yunduanjianzhan.cn 背景 简介 闯…

rk3588 安卓调试

目录 rk3588 安卓usb调试 rknn rtsp 安卓调试 rtsp yolov5 rk3588 安卓usb调试 rknn装上了android系统&#xff0c;用type-c usb连接上电脑&#xff0c;设备管理器发现了rk3588&#xff0c;但是Android Studio没有发现设备 后来怀疑是驱动没有安装&#xff0c;我用的驱动下…

【Linux】命令行参数和环境变量

一、命令行参数 我们平时写的main函数都是没有参数的&#xff0c;但其实下面的写法也是正确的。在使用时它的参数可带可不带&#xff0c;如果带上我们要明白其含义。 int main(int argc, char *argv[]); //argv代表一个指针数组&#xff0c;argc代表指针数组中的元素个数 1…