20230426 cortex-A7 cortex-M4核综合实验

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

cortex-M4核综合实验
1.通过配置开发板LED1/LED2/LED3三盏灯
2.当KEY1/KEY2/KEY3/光电开关/火焰传感器/人体红外中断触发,需要完成以下内容
1)中断触发,在串口工具打印一句话
2)中断触发,对应LED灯状态取反
3.需求:实验中的内容,需要在一个工程下配置,代码编写

usart.h

/* USER CODE BEGIN 0 */
int fputc(int ch,FILE *stream){
	while(!(huart4.Instance->ISR & (0X1 << 7)));
	huart4.Instance->TDR=ch;
	if(ch == '\n')
	{
		while(!(huart4.Instance->ISR & (0X1 << 7)));
		huart4.Instance->TDR='\r';
	}
	return ch;
}
/* USER CODE END 0 */

gpio.c


/* USER CODE BEGIN 2 */
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{
  /* Prevent unused argument(s) compilation warning */
 switch(GPIO_Pin){
	 case GPIO_PIN_15:
		 //光电开关
		 HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_8);
		 printf("led3####\n\r");
		 break;
	 case GPIO_PIN_5:
		 //火焰
		 HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);
		 printf("led2####\n\r");
		 break;
	 case GPIO_PIN_12:
		 HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_10);
	   printf("led1####\n\r");
		 break;
 }   
}
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
  /* Prevent unused argument(s) compilation warning */
 switch(GPIO_Pin){
	 case GPIO_PIN_9:
		 HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_8);
		 printf("led3####\n\r");
		 break;
	 case GPIO_PIN_7:
		 HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);
		 printf("led2####\n\r");
		 break;
	 case GPIO_PIN_8:
		 HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_10);
	   printf("led1####\n\r");
		 break;
 }   
}
/* USER CODE END 2 */

cortex-A7核综合实验
实验需求:在串口输入相应的命令,控制对应的硬件进行操作
在串口输入led1on------>板子LED1灯点亮
在串口输入led1off------>板子LED1灯熄灭
在串口输入led2on------>板子LED2灯点亮
在串口输入led2off------>板子LED2灯熄灭
在串口输入led3on------>板子LED3灯点亮
在串口输入led3off------>板子LED3灯熄灭

main.c文章来源地址https://www.toymoban.com/news/detail-430439.html

#include "led.h"

#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++)

			;

}



typedef struct

{

	char cmd_arr[20];	  //命令字符串

	gpio_t *gpiox;		  //gpio组号

	unsigned int pin;	  //对应引脚编号

	gpio_status_t status; //对应引脚状态

	void (*gpio_write)(gpio_t *gpiox, unsigned int pin, gpio_status_t status);

} cmd_t;



cmd_t arr[6] = {

	[0] = {

		.cmd_arr = "led1on",

		.gpiox = GPIOE,

		.pin = GPIO_PIN_10,

		.status = GPIO_SET_T,

		.gpio_write = hal_gpio_write,

	},

	[1] = {

		.cmd_arr = "led1off",

		.gpiox = GPIOE,

		.pin = GPIO_PIN_10,

		.status = GPIO_RESET_T,

		.gpio_write = hal_gpio_write,

	},

	[2] = {

		.cmd_arr = "led2on",

		.gpiox = GPIOF,

		.pin = GPIO_PIN_10,

		.status = GPIO_SET_T,

		.gpio_write = hal_gpio_write,

	},

	[3] = {

		.cmd_arr = "led2off",

		.gpiox = GPIOF,

		.pin = GPIO_PIN_10,

		.status = GPIO_RESET_T,

		.gpio_write = hal_gpio_write,

	},

	[4] = {

		.cmd_arr = "led3on",

		.gpiox = GPIOE,

		.pin = GPIO_PIN_8,

		.status = GPIO_SET_T,

		.gpio_write = hal_gpio_write,

	},

	[5] = {

		.cmd_arr = "led3off",

		.gpiox = GPIOE,

		.pin = GPIO_PIN_8,

		.status = GPIO_RESET_T,

		.gpio_write = hal_gpio_write,

	},

};

//字符串比较函数

int strcmp(const char *str1, const char *str2)

{

	while (*str1 && *str2 && *str1 == *str2)

	{

		str1++;

		str2++;

	}

	return *str1 - *str2;

}

//查找命令的

cmd_t *find_cmd(const char *buffer)

{

	int i;

	for (i = 0; i < 6; i++)

	{

		if (strcmp(arr[i].cmd_arr, buffer) == 0)

		{

			return arr + i;

		}

	}

	return 0;

}

int main()

{

	//LED123灯初始化

	hal_init_led123();



	//UART初始化

	hal_uart_init();



	char buf[50];

	int len = 50;



	while (1)

	{

		hal_recv_string(buf, len); //用来接收串口工具输入的字符串

		cmd_t *p = find_cmd(buf);

		if (p == 0)

		{

			printf("cmd not found\n\r");

		}

		else

		{

			p->gpio_write(p->gpiox, p->pin, p->status);

		}

	}

	return 0;

}


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

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

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

相关文章

  • ARM开发(cortex-A7核,UART总线实验)

    ---.h头文件--- ---.c功能实现文件--- ---.c主函数测试文件--- 结果: 字符:  字符串: 

    2024年02月12日
    浏览(45)
  • cortex-A7核PWM实验--STM32MP157

    实验目的:驱动风扇,蜂鸣器,马达进行工作 目录 一,PWM相关概念 有源蜂鸣器和无源蜂鸣器 二,分析电路图,框图 三,分析RCC章节 1,确定总线连接 2,根据总线内容确定基地址 3.分析RCC章节所需寄存器 1,RCC_MP_AHB4ENSETR寄存器 2,RCC_MP_APB1ENSETR寄存器 四,分析GPIO章节寄存器

    2024年02月11日
    浏览(33)
  • cortex-A7核IIC实验--STM32MP157AAA

    实验目的:采集温湿度传感器值 1.同步串行半双工总线,主要用于链接整体电路,硬件结构简单,接口连接方便,成本较低 2.两线制,只有两根双向信号线,数据线SDA,时钟线SCL 3.IIC传输速率:1)低速:100k ,2)400k,全速:3.4M 4.总线外接两个上拉电阻:在总线处于空闲状态时

    2024年02月11日
    浏览(44)
  • 【ARM】Day9 cortex-A7核I2C实验(采集温湿度)

     1. 2、编写IIC协议,采集温湿度值 iic.h si7006.h iic.c si7006.c main.c 运行结果: 2.思维导图  

    2024年02月11日
    浏览(37)
  • Arm的Cortex-A和Cortex-X内核架构对比

    Arm的Cortex-A和Cortex-X内核系列都是基于ARM架构设计的高性能处理器核心,但它们在设计目标、市场定位以及性能优化上有所不同: ### Cortex-A系列 - **设计目标**:Cortex-A系列是为广泛的移动计算设备和服务器平台设计的通用处理器内核,强调的是性能与功耗效率之间的平衡。其

    2024年02月22日
    浏览(41)
  • 【ARM Cortex-M 系列 2 -- CPU 之 Cortex-M7 介绍】

    请阅读 【ARM Coresight | AMBA BUS| Armv8/v9 | GCC 专栏导读】 上篇文章:ARM Cortex-M 系列 1 番外篇-- Cortex-M0, M3, M4, M7, M33 , M35P 差异 下篇文章:ARM Cortex-M 系列 2.1 – RT-Thread Cortex-M7 异常处理及 hardfault 处理分析 Cortex-M7是基于ARMv7架构,ARMv7 架构主要分为以下三类: 其中 Cortex-M 系列应用

    2024年02月17日
    浏览(38)
  • 【ARM Cortex-M 系列 1.1 -- Cortex-M33 与 M4 差异 详细介绍】

    请阅读 【嵌入式开发学习必备专栏 之 Cortex-Mx 专栏】 在移植 RT-Thread 到 瑞萨RA4M2(Cortex-M33)上时,遇到了hardfault 问题,最后使用了Cortex-M4中的调度相关的函数后,OS 可以正常调度了。所以这里做下 M33与 M4的关系梳理。 ARM Cortex-M33 和 Cortex-M4 都是 ARM 公司设计的32位RISC微处理

    2024年01月21日
    浏览(47)
  • ARM Cortex-A学习(3):MMU内存管理单元

    内存管理单元( MMU )负责虚拟地址到物理地址的转换。MMU通过翻译表将程序使用的虚拟地址映射到实际的物理内存位置,实现对内存的动态管理和隔离。这不仅允许更灵活的内存分配,还提高了系统的安全性和稳定性。了解MMU的工作原理对于开发底层代码、BootLoader和驱动程序

    2024年01月21日
    浏览(43)
  • 【ARM Cortex-M 系列 1 -- Cortex-M0, M3, M4, M7, M33 差异】

    请阅读 【ARM Coresight | AMBA BUS| Armv8/v9 | GCC 专栏导读】 下篇文章:ARM Cortex-M 系列 2 – CPU 之 Cortex-M7 介绍 Cortex-M0/M0+ 介绍 Cortex-M0 是 ARM 公司推出的一款微控制器(MCU)核心。这个核心是基于 ARMv6-M 架构设计的, 只支持 56 条指 令的小指令集,大部分指令是 16 位指令, 是 ARM Cor

    2024年02月17日
    浏览(47)
  • ARM Cortex-A学习(1):GIC(通用中断控制器)详解

    GIC (通用中断控制器, Generic Interrupt Controller )是一种用于处理中断的硬件组件,它的主要功能是协调和管理系统中的中断请求,确保它们被正确地传递给相应的处理器核心。 这里以Cortex-A9为例,先来看一下处理器的几种模式: 操作模式 描述 User 是应用程序运行的基本模式。这

    2024年01月24日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包