【ARM7.5作业】

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

作业1

【ARM7.5作业】,单片机,stm32,嵌入式硬件

 作业2【ARM7.5作业】,单片机,stm32,嵌入式硬件

 代码实现:

head.h

#ifndef __UART4_H__
#define __UART4_H__

#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_uart.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

fun

#include "uart4.h"
//初始化相关操作
void hal_uart4_init()
{
	/*******RCC章节初始化********/
	RCC->MP_AHB4LPENSETR |= 0x1 << 1; //1.使能GPIOB组控制器 MP_AHB4LPENSETR[1] = 1
	RCC->MP_AHB4LPENSETR |= 0x1 << 6; //2.使能GPIOG组控制器 MP_AHB4LPENSETR[6] = 1
	RCC->MP_APB1ENSETR |= 0x1 <<  16; //3.使能UART4组控制器 MP_APB1ENSETR[16] = 1
	/*******GPIO章节初始化********/
	//1.设置PB2引脚为复用功能模式 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 &= ~(0xf << 12);
	GPIOG->AFRH |= 0x6 << 12;



	/*******UART4章节初始化********/
	//0.设置串口使能UE=0
	USART4->CR1 &= ~0x1;
	//1.设置一次收发数据宽度:1位起始位,8位数据位,1
	USART4->CR1 &= ~(0x1 << 12);
	USART4->CR1 &= ~(0x1 << 28);
	//2.设置无奇偶校验位
	USART4->CR1 &= ~(0x1 << 10);
	//3.设置1位停止位
	USART4->CR2 &= ~(0x3 << 12);
	//4.设置16倍采样率
	USART4->CR1 &= ~(0x1 << 15);
	//5.设置串口不分频
	USART4->PRESC &= ~0xf;
	//6.设置串口波特率为115200
	USART4->BRR = ~0xffff;
	USART4->BRR = 0x22b;
	//7.设置串口发送器使能
	USART4->CR1 |= 0x1 << 3;
	//8.设置串口接收器使能
	USART4->CR1 |= 0x1 << 2;
	//9.设置串口使能
	USART4->CR1 |= 0x1;
	


}



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

	//1.判断发送数据寄存器是否为空ISR[7]
	//特点:为空才可以发送下一位的数据,为满需要等待
	//读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'
	int i=0;
	while(string[i]!='\0')
	{
		hal_put_char(string[i]);
		i++;
	}
	hal_put_char('\n');
	hal_put_char('\r');
	//一个字符一个字符进行发送

}

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

	//1.判断接收数据寄存器中是否接收到数据 ISR[5]
	while(!(USART4->ISR & 0x1 << 5));
	//2.将接收数据寄存器中的内容读出来
	char c = USART4->RDR;
	
	return c;
	

}

char str[100];

//接收一个字符串
char* hal_get_string()
{
	int i=0;
	while(1)
	{
		//1.循环进行接收
		str[i] = hal_get_char();
		//2.当键盘的回车键按下之后,代表字符串输入完成  '\r'
		hal_put_char(str[i]);
		if(str[i] == '\r') break;
		i++;
	}
	str[i] = '\0';
	hal_put_char('\n');
	//hal_put_char('\r');
	return str;
}

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();
	while(1)
	{
		
		char c = hal_get_char()+1;
		hal_put_char(c);
		

		/*
		char *string = hal_get_string();
		
		hal_put_string(string);
		*/
	}

	
	return 0;
}

运行结果:

作业1:

【ARM7.5作业】,单片机,stm32,嵌入式硬件

 作业2:

【ARM7.5作业】,单片机,stm32,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-524874.html

到了这里,关于【ARM7.5作业】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【单片机毕设选题】 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(67)
  • 单片机项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(83)
  • 【单片机毕设选题】Stm32单片机的音乐播放器设计 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(52)
  • 单片机项目分享 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(93)
  • stm32毕设分享 Stm32酒驾检查系统 - 单片机 嵌入式 物联网

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月23日
    浏览(76)
  • stm32毕设分享 stm32实现车牌识别系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(63)
  • 嵌入式STM32 单片机 GPIO 的工作原理详解

    STM32的 GPIO 介绍 GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 以 STM32F103ZET6 芯片为例子,该芯片共有 144 脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为

    2024年02月20日
    浏览(50)
  • 【单片机毕设选题】 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(62)
  • 单片机毕设分享 基于STM32单片机的老人防摔倒报警系统 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(71)
  • 单片机项目分享 单片机家用燃气的可视化实时监控报警仪 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(75)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包