10.1 LED灯实验(A7核和M4核)

news/2025/1/12 1:53:53/

文章目录

  • LED灯实验
    • 分析
      • 原理图
      • 芯片手册
        • RCC章节
        • GPIO章节
    • 实现代码
      • A7核
        • gpio.h
        • gpio.c
        • main.c
      • M4核
    • 实验现象

LED灯实验

分析

原理图

LED灯的丝印为LD1,LD2,LD3
通关原理图,可知三盏灯的引脚为LED1,LED2,LED3
引脚写高电平,灯点亮;引脚写低电平,灯熄灭

通过资源扩展板原理图,可知三盏灯的引脚为PE10,PF10,PE8

在这里插入图片描述

芯片手册

RCC章节

设置GPIOE,GPIOF控制器使能工作

在这里插入图片描述

GPIO章节

GPIOx_MODER:GPIO模式寄存器----->设置为输出模式
GPIOx_OTYPER:GPIO输出类型寄存器----->设置为推挽/开漏输出
GPIOx_OSPEEDR:GPIO输出速度寄存器----->设置为输出速率
GPIOx_PUPDR:GPIO是否需要上下拉电阻
GPIOx_ODR:GPIO输出数据寄存器------>输出高低电平,实现LED灯点亮核熄灭

下面以PE10为例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

实现代码

A7核

gpio.h

#ifndef __GPIO_H__
#define __GPIO_H__typedef struct{volatile unsigned int MODER; //00volatile unsigned int OTYPER; //04volatile unsigned int OSPEEDR; //08volatile unsigned int PUPDR; //0Cvolatile unsigned int IDR; //10volatile unsigned int ODR; //14
}gpio_t;#define GPIOE ((gpio_t*)0x50006000)
#define GPIOF ((gpio_t*)0x50007000)#define RCC_AHB4_ENSETR  (*(volatile unsigned int*)0x50000A28)void LED1_INIT();void LED2_INIT();void LED3_INIT();void LED1_ON();void LED2_ON();void LED3_ON();void LED1_OFF();void LED2_OFF();void LED3_OFF();#endif

gpio.c

#include "gpio.h"
void LED1_INIT()
{RCC_AHB4_ENSETR |= (0x1 << 4);GPIOE->MODER &=(~(0x3<<20));	GPIOE->MODER |=(0x1<<20);	GPIOE->OTYPER &=(~(0x1<<10));GPIOE->OSPEEDR &=(~(0x3<<20));GPIOE->PUPDR &=(~(0x3<<20));
}void LED2_INIT()
{RCC_AHB4_ENSETR |= (0x1 << 5);GPIOF->MODER &=(~(0x3<<20));	GPIOF->MODER |=(0x1<<20);	GPIOF->OTYPER &=(~(0x1<<10));GPIOF->OSPEEDR &=(~(0x3<<20));GPIOF->PUPDR &=(~(0x3<<20));}void LED3_INIT()
{RCC_AHB4_ENSETR |= (0x1 << 4);GPIOE->MODER &=(~(0x3<<16));	GPIOE->MODER |=(0x1<<16);	GPIOE->OTYPER &=(~(0x1<<8));GPIOE->OSPEEDR &=(~(0x3<<16));GPIOE->PUPDR &=(~(0x3<<16));
}void LED1_ON()
{GPIOE->ODR |=(0x1<<10);
}void LED2_ON()
{GPIOF->ODR |=(0x1<<10);
}void LED3_ON()
{GPIOE->ODR |=(0x1<<8);
}  void LED1_OFF()
{GPIOE->ODR &=(~(0x1<<10));
}void LED2_OFF()
{GPIOF->ODR &=(~(0x1<<10));
}  void LED3_OFF()
{GPIOE->ODR &=(~(0x1<<8));
}

main.c

#include "gpio.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()
{LED1_INIT();LED2_INIT();LED3_INIT();while(1){LED1_ON();delay_ms(500);LED1_OFF();LED2_ON();delay_ms(500);LED2_OFF();LED3_ON();delay_ms(500);LED3_OFF();}return 0;
}

M4核

使用CubMX创建工程
并完成上述分析过程中的寄存器相应位的修改
生成代码,并在main.c中加入自己的功能代码

while (1){/* USER CODE END WHILE */HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);HAL_Delay(500);HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_SET);HAL_Delay(500);HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8, GPIO_PIN_SET);HAL_Delay(500);HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8, GPIO_PIN_RESET);/* USER CODE BEGIN 3 */}

实验现象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/401243.html

相关文章

【linux 绑核】CPU 绑核

前言 以下介绍两个用于CPU绑核命令 taskset 适用于已经在运行的程序 numactl 适用于准备运行的程序 目录 1. 命令 taskset 1.1. 查看进程绑核状态 1.2. 指定PID绑核 2. 命令 numactl 2.1. 查看节点信息 2.2. 查看内存访问命中率 2.3. 指定某个节点 2.4. 指定程序绑核CPU 1. 命…

【转载】为什么使用3*3 小卷积核堆叠代替大卷积核

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a; https://blog.csdn.net/ytusdc/article/details/85265057 (1)3x3是最小的能够捕获像素八邻域信息的尺寸。 (2)两个3x3的堆…

3*3卷积核 5*5卷积核到底有多大区别

为了比较3*3卷积核 和 5*5卷积核在性能上到底有多大区别设计了两个网络去进行对比&#xff0c; 1.两个3*3的卷积核&#xff0c;2个池化层&#xff0c;2个全连接层 2.两个5*5的卷积核&#xff0c;2个池化层&#xff0c;2个全连接层 两个网络的收敛标准&#xff0c;权重的初始…

两个3*3的卷积核替代5*5(三个3*3卷积核替代7*7)分析

文章目录 为什么一个5x5的卷积核可以用两个3x3的卷积核来替代一个5*5卷积两个3*3卷积核 为什么一个7x7的卷积核可以用三个个3x3的卷积核来替代一个7*7卷积三个3*3卷积核 优点总结 为什么一个5x5的卷积核可以用两个3x3的卷积核来替代 知道了一个理论&#xff0c;两个3x3的卷积核…

cuda学习(3):核函数

1. 核函数介绍 核函数是cuda编程的关键 通过xxx.cu创建一个cudac程序文件&#xff0c;并把cu交给nvcc编译(nvcc 是nvidia的c编译器,编译cudac程序&#xff0c;是c的超集)&#xff0c;才能识别cuda语法 可以看到红框2中&#xff0c;编译.cpp文件用的CXX来做的&#xff0c;编译…

傻白入门芯片设计,SystemVerilog Assertion(SVA)学习(二十一)

目录 一、什么是断言&#xff1f; 二、断言分类&#xff1f; &#xff08;一&#xff09;从断言的功能上来说&#xff0c;广义的断言分为四类&#xff0c;分别满足不同的验证需要。 &#xff08;二&#xff09;从断言的触发方式上来分&#xff0c;断言又可以分成两大类&…

python GUI入门小工具开发,一键查询电脑配置、保持至数据库

python GUI入门小工具开发 用来练练手 效果图 1、创建一个界面 显示对应的系统配置信息 2、人工还是自动获取本机信息&#xff0c;这里采用的是人工点击获取 3、获取完配置信息后&#xff0c;点击提交并退出软件&#xff0c;数据之间插入至数据库。字段不够自己加就行了 impo…

计算机绘图电脑配置要求,【2人回答】CAD对电脑配置有什么要求?-3D溜溜网

AutoCAD 2017系统环境配置要求如下 1、操作系统 Microsoft Windows 10&#xff1b; Microsoft Windows 8.1&#xff1b;Microsoft Windows 7 SP1。 2、CPU 类型 1 千兆赫 (GHz) 或更高频率的 32 位 (x86) 或 64 位 (x64) 处理器。 3、内存 用于32 位 AutoCAD 2017 &#xff1…