首页 > 其他分享 >06. 点亮LED

06. 点亮LED

时间:2024-02-28 19:01:02浏览次数:23  
标签:HAL GPIO 点亮 LED Init GPIOF InitStruct 06

一、LED简介

  LED(Light Emitting Diode),发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED 的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是 负极,另一端连接电源的 正极,使整个晶片被环氧树脂封装起来。

  半导体晶片由两部分组成,一部分是 P 型半导体,在它里面 空穴 占主导地位,另一端是 N 型半导体,在这边主要是 电子。但这两种半导体连接起来的时候,它们之间就形成一个 P-N 结。当电流通过导线作用于这个晶片的时候,电子就会被推向 P 区,在 P 区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是 LED 灯发光的原理。而光的波长也就是光的颜色,是由形成 P-N 结的材料决定的。

二、源码实现

2.1、原理图

LED灯模块

LED灯模块引脚接线图

  通过原理图分析,LED1 和 LED2 的阳极接高电平,阴极分别接 PF9 引脚和 PF10 引脚,当 PF9 和 PF10 引脚输出低电平的时候,LED 导通,发光。因此,PF9 和 PF11 可以配置为 推挽输出输出低电平

2.2、程序源码

  LED 初始化函数内容如下:

/**
 * @brief led初始化函数
 * 
 */
void LED_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    __HAL_RCC_GPIOF_CLK_ENABLE();                                               // 使能GPIOF的时钟

    GPIO_InitStruct.Pin = GPIO_PIN_9;                                           // GPIO引脚
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;                                 // 推挽输出模式
    GPIO_InitStruct.Pull = GPIO_NOPULL;                                         // 不使用上下拉
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;                               // 高速模式
    HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);                                     // GPIO初始化

    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);                         // PF9,默认高电平,熄灭led
}

  有关时钟配置函数请在 STM32 的时钟系统 篇章查看。

  有关延迟的函数请在 系统滴答定时器 篇章查看。

  main() 函数内容如下:

int main(void)
{
    HAL_Init();

    System_Clock_Init(8, 336, 2, 7);

    Delay_Init(168);

    LED_Init();

    while (1)
    {
        HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9);                                  // GPIO电平翻转
        HAL_Delay(1000);
    }
  
    return 0;
}

标签:HAL,GPIO,点亮,LED,Init,GPIOF,InitStruct,06
From: https://www.cnblogs.com/kurome/p/18041459

相关文章

  • 2.06
    <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.a......
  • cf1606e-solution
    CF1606ESolutionlink考虑dp。注意到这个题造成的伤害与剩余人数有关,每次消灭的人数又与剩余人的血量最大值有关:设\(dp_{i,j}\)表示剩下\(i\)个人中血量最大值为\(j\)的方案数。显然当\(i-1>=j\)时一次伤害就可以杀光所有人,于是这时\(dp_{i,j}=j^i-(j-1)^i\)(只需让......
  • P2065 [TJOI2011] 卡片 题解
    看大家建图时中间都连了质数点,发一个不用质数点的解法。我们可以先从源点向每一个蓝色卡片对应的点连一条边,再从每一个红色卡片对应的点向汇点连一条边。如果两张卡片可以一起拿走,那就在它们之间连一条边(蓝色连到红色),这些边的最大流量都是\(1\)。建好图以后我们就可以直接用Di......
  • Java遇到PKIX path building failed错误的解决办法
    Java调用HTTPS可能出现如下错误:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget。测试验证测试是否会出现本问题可以使用如下命令:javaSSLPokejira.example.com443......
  • 解决uniapp项目中使用vant Weapp图标组件报错问题(Module build failed from ./node_mo
    解决uniapp项目中使用vantWeapp图标组件报错问题(Modulebuildfailedfrom./node_modules/postcss-loader/src/index):https://blog.csdn.net/it_cgq/article/details/111991644?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170909210216800225582870%2522%252C%252......
  • 【题目】LuoguP1065
    准备机试,做两道题复健(这事我是不是干了好多次了)。https://www.luogu.com.cn/problem/P1065题意是有n个工件,每个工件有m道工序,每个工件的每道工序有其用时,同时对应一台机器,机器总共也有m台。每台机器同时只能处理一个工序。现给出工件的工序顺序,问尽可能靠前安排,所用的时间。 ......
  • = Request processing failed; nested exception is com.example.exceptio
    =Requestprocessingfailed;nestedexceptioniscom.example.exceptio关于映射文件的问题下次再介绍,这次主要总结hibernate常用主键生成策略。(1)incrementa)对主键值采取自动顺序增长的方式生成新的主键,值默认从1开始。b)原理:在当前应用实例中维持一个变量,以保存当前最......
  • Hyperledger Fabric出块配置详解
    HyperledgerFabric的出块主要是Orderer节点负责,出块配置位于创世区块中,支持定时出块、达到一定交易数出块两种条件。出块配置位于configtx.yaml中,修改出块配置后需要重新生成创世区块。相关参数若需要修改fabric的出块机制,则需要调整以下配置参数:BatchTimeout:出块超时时间,最......
  • P3706 「SDOI2017」硬币游戏 解题报告
    oj:https://gxyzoj.com/d/hzoj/p/P451概率与期望+hash+高斯消元声明一些东西,pre(S,l)表示串S的长度为l的前缀,lst(S,l)表示串S的长度为l的后缀一.对于所有串建立字典树,像「HNOI2013」游走一样高斯消元,时间复杂度\(O(n^3m^3)\),预计50/70pts二.正解:显然,n项中,出现一个长度......
  • Python脚本给数据库插入数据报错: raise errorclass(errno, errval) pymysql.err.Integ
    一、问题描述在SQL客户端插入数据时执行SQL语句INSERTINTOuser_xxx(id,uid,total,balance,wallet_type,ctime,utime)VALUES(0,'336448391',271,89000098,'coin',1708588247,1709007766);可以成功执行没报错;使用python脚本执行SQL语句INSERTINTOuser_xxx......