STM32完全学习——F407ZGT6点亮LED

news/2024/11/16 20:35:01/

一、寄存器描述

我们想要点亮LED,无非就是对于寄存器的一些设置,主要分为两步,首先是需要打开相应GPIO的时钟,这是因为STM32在上电后,每个外设的时钟默认都是关闭的,需要我们手动打开。其次就是对GPIO的一些寄存器进行设置,然后给端口输出0或1就可以点亮LED了。需要注意的是我们这次需要在KEIL5软件下进行编程。

二、编程实现

有了上面的寄存器表,我们只需要设置一些值就可以完成对GPIO的控制了,我这个开发板上面我使用的是GPIOF9和GPIOF10这两个端口,LED灯的负极接的GPIOF9和GPIOF10。程序如下:

#ifndef __LED_H__
#define __LED_H__#define uint unsigned inttypedef struct rGPIO
{uint MODER;uint OTYPER;uint OSPEEDR;uint PUPDR;uint IDR;uint ODR;uint BSRR;
}GPIO_TypeDef;typedef struct rRCC
{uint CR;uint PLLCFGR;uint CFGR;uint CIR;uint AHB1RSTR;uint AHB2RSTR;uint AHB3RSTR;uint RESERVED1;uint APB1RSTR;uint APB2RSTR;uint RESERVED2;uint RESERVED3;uint AHB1ENR;
}RCC_TypeDef;void led_init(void);
#endif
#include "led.h"GPIO_TypeDef *GPIOF = (GPIO_TypeDef *)0x40021400;  //GPIOF的起始地址
RCC_TypeDef *RCC = (RCC_TypeDef *)0x40023800;      //RCC的起始地址void led_init(void)
{RCC->AHB1ENR &= ~(0x01 << 5);RCC->AHB1ENR |= 0x01 << 5;      //开启GPIOF的时钟GPIOF->MODER &= ~((0x03 << 9*2) | (0x03 << 10*2));  GPIOF->MODER |= (0x01 << 9*2) | (0x01 << 10*2);   //端口F设置为通用输出模式GPIOF->OTYPER &= ~((0x01 << 9) | (0x01 << 10));GPIOF->OTYPER |= (0x0 << 9) | (0x0 << 10);        //端口F设置为推挽输出GPIOF->OSPEEDR &= ~((0x03 << 9*2) | (0x03 << 10*2));GPIOF->OSPEEDR |= (0x02 << 9*2) | (0x02 << 10*2); //端口F输出速度设置为50MHzGPIOF->ODR = 0xfffff0ff;                          //给GPIOF9和F10两个端口都输出0
}

三、注意事项

首先我们运行上述代码会发现程序好像并没有运行,然后我们只需要勾选一个地方就可以了。

如果还有一些错误比如下面这种:

那么你只需要在main()函数下面在加一个函数就可以了,里面什么都不需要写。

#include "led.h"int main(void)
{led_init();}void SystemInit(void)
{}


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

相关文章

消息中间件分类

消息中间件&#xff08;Message Middleware&#xff09;是一种在分布式系统中实现跨平台、跨应用通信的软件架构。它基于消息传递机制&#xff0c;允许不同系统、不同编程语言的应用之间进行异步通信。 常见的消息中间件类型包括&#xff1a; 1. JMS&#xff08;Java Message S…

英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2

我们介绍的 NV-Embed-v2 是一种通用嵌入模型&#xff0c;它在大规模文本嵌入基准&#xff08;MTEB 基准&#xff09;&#xff08;截至 2024 年 8 月 30 日&#xff09;的 56 项文本嵌入任务中以 72.31 的高分排名第一。此外&#xff0c;它还在检索子类别中排名第一&#xff08;…

ollama+springboot ai+vue+elementUI整合

1. 下载安装ollama (1) 官网下载地址&#xff1a;https://github.com/ollama/ollama 这里以window版本为主&#xff0c;下载链接为&#xff1a;https://ollama.com/download/OllamaSetup.exe。 安装完毕后&#xff0c;桌面小图标有一个小图标&#xff0c;表示已安装成功&…

【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑

指标介绍 租户 CPU 使用量 * 100 / 租户 CPU 分配量。 指标参数说明 指标项指标名称单位租户 CPU 消耗ob_tenant_cpu_percent% 计算表达式 sum(rate(ob_sysstat{stat_id"140013",LABELS}[INTERVAL])) by (GBLABELS) / sum(ob_sysstat{stat_id"140005"…

Wxml2Canvas小程序将dom转为图片,bug总结

1.显示文字 标签上面使用 data-type"text" 加上class名 <view data-type"text" class"my_draw_canvas"><text data-type"text" class"center my_draw_canvas" data-text"企业出游证明">企业出游证明…

JVM——类加载器、类加载器的分类

类加载器是java虚拟机提供给应用程序去 实现获取类和接口字节码数据 的技术 类加载器的分类&#xff1a; 一类是 Java代码中实现的一类是 Java虚拟机底层源代码实现的 通常可以细分为三大类&#xff1a;jdk8版本中的 java代码中的 扩展类加载器&#xff1a;Extension 允许扩…

基于Java Springboot在线教育学习系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

操作系统——同步

笔记内容及图片整理自XJTUSE “操作系统” 课程ppt&#xff0c;仅供学习交流使用&#xff0c;谢谢。 背景 解决有界缓冲区问题的共享内存方法在并发变量上存在竞争条件&#xff0c;即多个并发进程访问和操作同一个共享数据&#xff0c;从而其执行结果与特定访问次序有关。这种…