ARM_cortex-A7核UART总线

这篇具有很好参考价值的文章主要介绍了ARM_cortex-A7核UART总线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验一:键盘输入一个字符'a',串口工具显示'b‘

实验二:实现现象:键盘输入一个字符串,串口工具回显输入的字符串

uart4.h 

#ifndef __UART4_H__
#define __UART4_H__

#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_uart.h"
#include "stm32mp1xx_rcc.h"

//初始化相关操作
void hal_uart4_init();

//发送一个字符
void hal_put_char(const char str);

//发送一个字符串
void hal_put_string(const char* string);

//接收一个字符
char hal_get_char();

//接收一个字符串
char* hal_get_string();

#endif

uart4.h

#include "uart4.h"

//初始化相关操作
void hal_uart4_init()
{
	/*********RCC章节初始化***************/
	//RCC寄存器使能GPIOG组控制器[6] = 1
	RCC->MP_AHB4ENSETR |= (0x1 << 6);

	//RCC寄存器使能GPIOB组控制器 [1] = 1
	RCC->MP_AHB4ENSETR |= (0x1 << 1);
	
	//RCC寄存器使能UART4组寄存器 [16] = 1
	RCC->MP_APB1ENSETR |= (0x1 << 16);


	/*******GPIO章节初始化**************/

	//1、设置PB2引脚为复用功能模式
	//GPIOB_MODER寄存器初始化-->[5:4] = 10 复用功能模式
	GPIOB->MODER &= (~(0x3 << 4));
	GPIOB->MODER |= (0x1 << 5);

	//2、设置PB2引脚复用功能为UART4_RX	AFRL[11:8] = 1000
	GPIOB->AFRL &= (~(0xf << 8));
	GPIOB->AFRL |= (0x1 << 11);

	//1、设置PG11引脚为复用功能模式 MODER[23:22] = 10
	GPIOG->MODER &= (~(0x3 << 22));
	GPIOG->MODER |= (0x1 << 23);

	//2、设置PG11引脚复用功能为 UART4_TX AFRH[15:12] = 0110
	//GPIOG_AFRH寄存器设置 PG11 引脚复用功能为UART4_TX [15:12] = 0110
	GPIOG->AFRH &= (~(0xf << 12));
	GPIOG->AFRH |= (0x3 << 13);


	/**********UART4章节初始化*********/
	//0、设置串口UE= 0
	USART4->CR1 &= (~(0x1 << 0));

	//1、设置1位的起始位,8位的数据位 M[1:0] = 00 28:M1 12:M0
	USART4->CR1 &= (~(0x1) << 12);
	USART4->CR1 &= (~(0x1) << 28);
	
	//2、没有奇偶校验位 CR[10] = 0
	USART4->CR1 &= (~(0x1 << 10));

	//3、设置1位的停止位 CR2[13: 12] = 00
	USART4->CR2 &= (~(0x3 << 12));

	//4、设置16倍采样率 CR1[15] = 0
	USART4->CR1 &=(~(0x1 << 15));

	//5、设置串口不分频  PRESC = 0000
	USART4->PRESC &= (~(0xf << 0));

	//6、设置串口波特率 为115200 BRR = 0x22b
	USART4->BRR &= (~(0xffff));
	USART4->BRR |= 0x22B;
	
	//7、设置串口发送器使能 CR1 [3] = 1
	USART4->CR1 |= (0x1 << 3);

	//8、设置串口接收器使能 CR1 [2] = 1
	USART4->CR1 |= (0x1 << 2);

	//9、设置串口使能 CR1 [0] = 1
	USART4->CR1 |= (0x1 << 0);

}


//发送一个字符
void hal_put_char(const char str)
{
	//1、判断发送数据寄存器是否为空
	//特点:为空可以发送下一位的数据,为满需要等待
	//读0:满-->等待  读1:空-->发送数据
	while(!(USART4->ISR & (0x1 << 7)));
	
	//2、将发送的内容,赋值给发送数据寄存器
	USART4->TDR = str;

	//3、判断一帧数据是否发送完成  ISR[6]
	//读0:没有发送完成-->等待  读1:发送完成
	while(!(USART4->ISR & (0x1 << 6)));
}

//发送一个字符串
void hal_put_string(const char* string)
{
	//判断是否为 '\0'
	//一个字符一个字符进行发送
	while(*string != '\0')
	{
		hal_put_char(*string); //发送一个字符串
		string++;
	}
}

//接收一个字符
char hal_get_char()
{
	//1、判断接收数据寄存器中是否接收到数据 ISR[5]
	while(!(USART4->ISR &(0x1 << 5)));

	//2、将接收数据寄存器中的内容读出来
	char str = USART4->RDR;
	return str;

}


//接收一个字符串
char* hal_get_string()
{
	//循环进行接收
	//当键盘回车键按下之后,代表字符串输入完成-->'\r'
	static char string[32];
	char ch;
	int i=0;
	while(1)
	{
		ch = hal_get_char();
		if('\r' == ch)
		{
			break;
		}

		string[i++] = ch;
		if(i >= 31)
		{
			break;
		}

	}
	string[i] = '\0';  //字符串末尾赋 '\0'
	return string;

}

main.c

#include "uart4.h"
extern void printf(const char *fmt, ...);
void delay_ms(int ms)
{
	int i,j;
	for(i = 0; i < ms;i++)
		for (j = 0; j < 1800; j++);
}


int main()
{
    hal_uart4_init(); //初始化

	char str;
	int i;
	while(1)
	{

		/*
		   char str = hal_get_char() + 1; //接收单个字符,并加1
 
 		   hal_put_char(str);    //发送单个字符
	    */

	char temp[32] = "";

	hal_put_char('\r'); //首字符输入
	while(1)
	{

		str = hal_get_char();   //接收单个字符
		hal_put_char(str);     //发送单个字符

		if('\r' == str)    //输入为回车时,跳出循环
		{
			break;
		}

			temp[i++] = str;   //存入字符串
		}

		hal_put_char('\n');	//换行

		//char *ptr = hal_get_string();

		hal_put_string(temp); //回显
		hal_put_char('\n');	  //换行

		i = 0;

	}

	return 0;
}

 实验一:

ARM_cortex-A7核UART总线,arm开发,单片机,嵌入式硬件

实验二:

ARM_cortex-A7核UART总线,arm开发,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-525367.html

到了这里,关于ARM_cortex-A7核UART总线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机、ARM、嵌入式开发、Android 底层开发有什么关系?

    从我目前的见识来看: 单片机是个系统(比如:51、AVR、PLC...),其中包含了去除了输入输出之外的运算器、控制器、存储器,我们用程序可以非常直观的控制引脚电平的高低。最近很多小伙伴找我,说想要一些ARM的资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,

    2024年02月02日
    浏览(67)
  • 利用AHB-Lite总线实现ARM Cortex-M0基础的SoC系统;如何设计一个SoC系统;AHB-Lite;ARM Cortex-M0;SoC;

      本文讨论了SoC系统的架构设计,包括处理器核心、内存以及其他外设的互连,并详细描述了如何通过AHB-Lite总线实现高效的数据传输。AHB-Lite总线是一种简化版本的AHB总线。同时,阐述了利用寄存器映射以及其他硬件资源与软件接口的设计方法,以满足SoC系统的功能需求。

    2024年02月06日
    浏览(63)
  • 探索嵌入式开发领域:单片机、ARM、Android底层的紧密联系

    作为一个曾编写ARM教程和参与Android产品开发的专家,我发现单片机、ARM、嵌入式开发和Android底层开发之间存在紧密的联系。对于那些希望在嵌入式开发领域发展的人来说,了解这些领域的知识至关重要。为了帮助你更好地学习这些内容,我总结了一些嵌入式资料,你可以在

    2024年02月11日
    浏览(45)
  • ARM单片机中断处理过程解析

    前言 中断,在单片机开发中再常见不过了。当然对于中断的原理和执行流程都了然于胸,那么对于ARM单片机中断的具体处理行为,你真的搞清楚了吗? 今天来简单聊一聊,ARM单片机中断处理过程中的具体行为是什么样的,搞清楚了这些,让你彻底理解中断是如何执行的。 掌

    2024年02月06日
    浏览(42)
  • NXP i.MX 8M Plus工业开发板硬件说明书( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)

    本文主要介绍创龙科技TLIMX8MP-EVM评估板硬件接口资源以及设计注意事项等内容。 创龙科技TLIMX8MP-EVM是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 + 单核ARM Cortex-M7异构多核处理器设计的高性能工业评估板,由核心板和评估底板组成。ARM Cortex-A53(64-bit)主处理单元主频高达1.6GHz,ARM

    2024年02月11日
    浏览(85)
  • 【理解ARM架构】单片机中的C语言

    🐱作者:一只大喵咪1201 🐱专栏:《理解ARM架构》 🔥格言: 你只管努力,剩下的交给时间! 本喵默认各位小伙伴都会C语言,我们平时学习C语言都是在Windows环境下学习的,对于程序执行的底层逻辑了解的不是非常清楚,本喵在这里给大家介绍一下,C语言在单片机中是如何

    2024年01月16日
    浏览(46)
  • ARM、树莓派、Arduino、单片机四者有什么不同

    一张图展示它们之间的关系,如下所示: 什么是arm? 其实ARM是一种微处理器架构,但它和“手臂”(Arm)毫无关系,哪怕在拼写上一样。虽然两者都十分强壮,但ARM更像一个小而精干的智能脑袋,可以帮助各种设备实现高效、可靠的计算和控制。 ARM,全称为Advanced RISC Mach

    2024年04月16日
    浏览(42)
  • 001_区分单片机、arm、DSP、FPGA(零基础也能区分)

    单片机是指一个集成在一个芯片上的完整计算机系统,最早的单片机由微处理器核心、存储器、输入输出端口和计时电路等基本部分组成。例如,Intel公司推出的第一款单片机是Intel 8048,它于1976年发布,包括一个8位的中央处理器、ROM、RAM、输入输出端口和计时电路等基本模

    2024年02月08日
    浏览(43)
  • 如果STM32/GD32一类的ARM单片机解除读写保护的方法

    有时候啊,使用ST-Link给STM32一类的ARM单片机下载程序的时候,发现怎么也下载不了,可能是由于芯片被写保护了。那怎么办呢?可以使用STM32 ST-LINK Utility工具解除芯片的写保护,本篇博文介绍操作步骤,文章最后有工具下载链接。 双击“STM32 ST-LINK Utility.exe”,打开软件。 软

    2024年02月09日
    浏览(48)
  • TI AM64x开发板规格书(双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F,主频1GHz)

    创龙科技TL64x-EVM是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F多核处理器设计的高性能评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,高性能低功耗,稳定可靠,可满足各种工业应用环境。 评估板接口资源丰富,

    2024年02月11日
    浏览(109)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包