A7\M4核串口实验
1、分析电路图
UART4_RX------>PB2
UART4_TX------>PG11
2、RCC章节分析
使能GPIOB和GPIOG控制器
RCC_MP_AHB4ENSETR[1] = 1------->使能GPIOB这一组控制器
RCC_MP_AHB4ENSETR[6] = 1------->使能GPIOG这一组控制器
3、GPIO章节分析
3.1分析GPIOx_MODER寄存器:设置PB2和PG11引脚为复用功能
GPIOB_MODER[5:4] = 10 ------->设置PB2引脚为复用功能
GPIOG_MODER[23:22] = 10 ------->设置PG11引脚为复用功能
3.2分析GPIOx_MODER寄存器:
GPIOB_AFRL[11:8] = 1000 ------->设置PB2引脚为复用功能UART4_Rx
GPIOG_AFRH[15:12] = 0110 ------->设置PG11引脚为复用功能UART4_Tx
4、UART章节
4.1分析USART_CR1寄存器
USART_CR1[28][12] = 00 ------->设置串口8位数据位
USART_CR1[15] = 0 ------->设置串口16倍采样率,会影响波特率的计算
USART_CR1[10] = 0------->设置串口无奇偶校验位
USART_CR1[3] = 1------->设置串口发送寄存器使能
USART_CR1[2] = 1------->设置串口接收寄存器使能
USART_CR1[0] = 1------->设置串口接收使能
4.2分析USART_CR2寄存器
设置串口1位停止位
4.3分析USART_BRR寄存器
设置串口波特率为115200bps,系统提供的串口时钟源:64MHZ
BRR = 64MHZ / 115200 = 0x22b
USART4_BRR = 0x22b ------->设置串口波特率为115200
4.4分析USART_RDR寄存器:接收数据存放在接收数据寄存器中
4.5分析USART_TDR寄存器:发送数据存放在发送数据寄存器中
4.6分析USART_PRESC寄存器:设置串口不分频
4.7分析USART_ISR寄存器:
USART_ISR[6]:判断一帧数据是否发送完成,这位只可以读
特点:如果发送数据完成之后,才可以发送下一帧数据
读0:发送数据没有完成,需要等待
读1:发送数据完成,可以发送下一帧数据
USART_ISR[5]:判断接收数据寄存器是否有数据可读,这位只可以读
特点:接收数据寄存器有数据,才可以读数据
读0:没有接收到数据,需要等待
读1:接收到数据,可以读这个数据
代码演示
#include "uart4.h"
//1.初始化函数
void uart4_init()
{//rccRCC->MP_AHB4ENSETR |=(0x1 << 1);RCC->MP_AHB4ENSETR |=(0x1 << 6);RCC->MP_APB1ENSETR |=(0x1 << 16);//GPIOGPIOB->MODER &=(~(0x3 << 4));GPIOB->MODER |=(0x2 << 4);GPIOG->MODER &=(~(0x3 << 22));GPIOG->MODER |=(0x2 << 22);GPIOB->AFRL &=(~(0xf << 8));GPIOB->AFRL |=(0x8 << 8);GPIOG->AFRH &=(~(0xf << 12));GPIOG->AFRH |=(0x6 << 12);//UARTif(USART4->CR1 &(0x1 << 0)){//将UE位禁止USART4->CR1 &=(~(0x1 << 0));}//1.串口初始化 8位数据位 无奇偶校验位USART4->CR1 &=(~(0x1 << 12));USART4->CR1 &=(~(0x1 << 28));USART4->CR1 &=(~(0x1 << 10));//2.设置串口一位停止位USART4->CR2 &=(~(0x3 << 12));//3.设置串口的16倍采样率USART4->CR1 &=(~(0x1 << 15));//4.设置串口不分频USART4->PRESC &=(~(0xf));//5.设置串口波特率115200USART4->BRR &=(~(0xffff << 0));USART4->BRR |=(0x22b << 0);//6.设置串口发送器使能USART4->CR1 |=(0x1 << 3);//7.设置串口接收器使能USART4->CR1 |=(0x1 << 2);//8.设置串口使能USART4->CR1 |=(0x1 << 0);
}
//2.发送一个字符
void put_char(const char str)
{//1.判断发送数据寄存器是否有数据 ISR[7]//读0:发送数据寄存器满,需要等待//读1:发送数据寄存器为空while(!(USART4->ISR &(0x1 << 7)));//2.将要发送的字符写入到发送数据寄存器中USART4->TDR &=(~(0xff));USART4->TDR =str;//3.判断发送数据是否发送完成//读0:发送数据没有完成,等待//读1:发送数据完成while(!(USART4->ISR &(0x1 << 6)));
}
//3.发送一个字符串
void put_string(const char* str)
{//判断是否为'\0'while(*str != '\0'){put_char(*str);str++;} //一个一个发送
}
//4.接收一个字符
char get_char()
{char ch;//1.判断接收寄存器是否有数据可读 ISR[5]//读0:没有数据可读,需要等待//读1:有数据可读while(!(USART4->ISR & (0x1 << 5)));//2.将接收数据寄存器中内容读出来ch=USART4->RDR;return ch;
}
char buf[50]={0};
//5.接收一个字符串
char* get_string()
{ put_char('\n');put_char('\r');int i=0;//1.循环进行接收while((buf[i] = get_char()) != '\r'){put_char(buf[i]);i++;}put_char('\n');put_char('\r');//2.循环实现:接收一个字符之后,发送一个字符//3.当键盘回车键按下之后代表字符串接收结束'\r'//4.字符串补'\0'buf[i]='\0';return buf;
}
A7\M4核串口实验相关推荐
- FPGA IP核 串口实验 signaltap
文章目录 前言 一.IP核 1. 新建工程 2. IP核建立和调用 3. 工程文件的配置 二.串口IP核 1 2. 总结 前言 之前有写过verilog对FPGA串口和sdram的操作,但是我整合代码 ...
- 10.1 LED灯实验(A7核和M4核)
文章目录 LED灯实验 分析 原理图 芯片手册 RCC章节 GPIO章节 实现代码 A7核 gpio.h gpio.c main.c M4核 实验现象 LED灯实验 分析 原理图 LED灯的丝印为LD ...
- STM32MP157开发笔记 | 02 - 开发环境搭建(A7核、M4核)
一.STM32MP157 1. 系列介绍 STM32MP157微处理器基于灵活的双Arm® Cortex®-A7内核(工作频率800 MHz)和Cortex®-M4内核(工作频率209 MHz)架构, ...
- Vivado简单串口实验,打印hello world
前言 从Vivado 2020开始,赛灵思发布了全新的Vitis IDE组件,用于代替Xilinx SDK,它们之间的操作稍微有些不同,但都是基于Eclipse套个马甲而来. 本文将使用Vivado ...
- 【Xilinx AX7103 MicroBalze学习笔记6】MicroBlaze 自定义 IP 核封装实验
目录 实验任务 实验框图 创建自定义 IP 封装 IP IP 封装界面配置 硬件设计(Vivado部分) Block Design搭建 添加 IP 库 约束文件 软件设计(SDK部分) 往期系列博客 ...
- CC2530的串口实验
CC2530的串口实验主要有编程主要有一下几个步骤: 一.串口初始化函数(设置时钟频率-->选择用来当做串口的IO-->设置波特率-->发送中断设为0) 二.字符串发送函数(U0DB ...
- STM32之USART-串口通信(含串口实验详细解析)
STM32之串口通信 - USART(含串口实验详细解析) 开发环境:Window 10 开发工具:Keil uVision5 MDK 硬件:STM32F103 资料参考: [正点原子]STM32F1 ...
- 【开发教程5】疯壳·ARM功能手机-串口实验教程
ARM功能手机 --疯壳·开发板系列 串口实验教程 图1 第一节串口硬件电路 串口通过USB口及手环下载调试线引出,连接MCU的P12与P13引脚,如下图所示: 图2 第二节 UART寄存器 2.1 ...
- mssql 无法启动调试器 数据为空_织女星开发板启动模式修改——从ARM M4核启动
织女星开发板启动模式修改--从ARM M4核启动 前言 刚开始玩织女星开发板的时候,想先从熟悉的ARM核入手,连上Jlink,打开MDK版本的Demo程序,编译OK,却检测不到芯片,仔细看了一下文档, ...
最新文章
- TensorRT Analysis Report分析报告
- AI可以在游戏里称霸,但是解决现实问题太难了
- BeautifulSoup库使用
- Spring MVC实现文件下载
- 39. 组合总和020(思路+详解)
- React 点击按钮显示div与隐藏div
- 从内存中窃取未加密的SSH-agent密钥
- Ubuntu 14.04 安装 MongoDB
- Google+ 为什么会死?
- 计算机中丢失python27 dll_python27.dll
- 浙江省二级计算机vfp,浙江省高校计算机等级考试大纲(二级——VisualFoxPro语言程序设计大纲)...
- 079冒险岛mysql解封账号_冒险岛079MAX稀有整合2020年度版,亲测一键端10人限制端...
- vue项目html5调取手机摄像头录像并上传
- iMeta | 北大陈峰/陈智滨等发表口腔微生物组研究中各部位取样的实验方法(Protocol)...
- vue 前端进行tab页面切换时,要求不刷新
- android系统源码学习 -- 蓝牙 bluetooth (一) 入门
- 哪个软件能代替斐讯路由_斐讯路由app下载-斐讯路由app安卓版下载v7.2.0-聚侠网...
- 有关计算机英语作文素材,英语作文素材范文
- 音视频开发:大华摄像头配置RTSP与RTMP地址访问视频画面
- 知乎1w视频播放能赚多钱?今天来大揭秘