当前位置: 首页 > news >正文

ARMday06(串口)

代码:

#include "gpio.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_uart.h"
void init();
char getc();
void putc(const char data);
int main()
{init();//初始化putc('j');char c=getc();putc(c);while(1);return 0;
}
void init(){//设置使能RCC->MP_AHB4ENSETR|=(0x1<<1);RCC->MP_AHB4ENSETR|=(0x1<<6);RCC->MP_APB1ENSETR|=(0X1<<16);//设置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);}
void putc(const char data)
{
//判断发送数据寄存器有没有数据,没有数据时可以发送while(!(USART4->ISR&(0X1<<7)));USART4->TDR=data;//将要发送的数据保存在发送寄存器中while(!(USART4->ISR&(0X1<<6)));//数据传输完成,函数结束
}
char getc(void)
{char ch;while(!(USART4->ISR & (0x1 << 5)));ch = (char)USART4->RDR;return ch;
}

what a pity,can't run

http://www.lryc.cn/news/229114.html

相关文章:

  • Rust字符串详解
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • Window安装MongoDB
  • 20.有效的括号(LeetCode)
  • Vue3组件传参之Mitt插件方式
  • 【数据仓库】数仓分层方法
  • Linux网络——自定义协议
  • 【OpenCV实现图像:用OpenCV图像处理技巧之巧用直方图】
  • 【Android】画面卡顿优化列表流畅度四之Glide几个常用参数设置
  • js控制手机蓝牙
  • C++11 原始字符串字面量R“()“
  • 【Vue原理解析】之虚拟DOM
  • HCIE-灾备技术和安全服务
  • 【图论实战】Boost学习 01:基本操作
  • Rust 中的引用与借用
  • Azure 机器学习:在 Azure 机器学习中使用 Azure OpenAI 模型
  • XML Web 服务 Eclipse实现中的sun-jaxws.xml文件
  • 16.1 二次根式 教学设计及课堂检测设计
  • Android数据流的狂欢:Channel与Flow
  • Java 单元测试最佳实践:如何充分利用测试自动化
  • windows系统用于 SDN 的软件负载均衡器 (SLB)
  • 漏洞复现--IP-guard flexpaper RCE
  • Electron-vue出现GET http://localhost:9080/__webpack_hmr net::ERR_ABORTED解决方案
  • Linux---(六)自动化构建工具 make/Makefile
  • 谷歌:编写干净的代码以减少认知负荷
  • 微信小程序display常用属性和子元素排列方式介绍
  • 设计模式—结构型模式之代理模式
  • C# PDF转HTML字符串
  • el-table解决数据过少小于高度有留白的问题
  • vue实现无感刷新token