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

08. 点亮LED

时间:2023-10-03 21:22:18浏览次数:34  
标签:HAL PIN 点亮 08 LED GPIOC GPIO 500

一、LED简介

  发光二极管,简称为 LED,是一种常用的发光器件,它由含 镓(Ga)、砷(As)、磷(P)、氮(N)等的 化合物 制成。通过 电子空穴 复合释放能量发光,它在照明领域应用广泛。

  发光二极管与普通二极管一样是由一个 PN结 组成,也具有 单向导电性。当给发光二极管加上 正向电压 后,从 P区 注入到 N区 的 空穴 和由 N区 注入到 P区 的 电子,在 PN结 附近数微米内分别与 N区 的 电子 和 P区 的 空穴 复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。发光二极管的 反向击穿电压 大于5伏。它的 正向伏安特性曲线 很陡,使用时必须 串联限流电阻 以控制通过二极管的电流。

二、原理图

LED灯模块

LED引脚图

三、程序设计

  LED 初始化函数 :

void LED_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  __HAL_RCC_GPIOC_CLK_ENABLE();                             // 使能GPIOC的时钟
  
  GPIO_InitStruct.Pin = GPIO_PIN_0;                         // 选择GPIO的引脚
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;               // 设置为推挽输出模式
  GPIO_InitStruct.Pull = GPIO_NOPULL;                       // 不使用上下拉
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;             // 设置GPIO的输出速度为高速
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);                   // GPIO初始化函数
  
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);       // 默认输出高电平,LED熄灭
}

  点亮 LED:

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);       // 输出低电平,点亮LED

  熄灭 LED:

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);         // 输出高电平,熄灭LED

  LED 闪烁:

HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);                      // GPIO状态翻转,LED 闪烁
HAL_Delay(500);                                            // 延迟500毫秒

  时钟初始化函数 请在 STM32F1的时钟树 篇章查看;

  main() 函数:

int main(void)
{
  HAL_Init();                                              // HAL库初始化

  system_stm32_clock_init(RCC_PLL_MUL9);                   // 时钟初始化

  LED_Init();
  
  while (1)
  {
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);  // 输出低电平,点亮LED
    HAL_Delay(500);					   // 延迟500毫秒
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);    // 输出高电平,熄灭LED
    HAL_Delay(500);					   // 延迟500毫秒
  }
}

标签:HAL,PIN,点亮,08,LED,GPIOC,GPIO,500
From: https://www.cnblogs.com/kurome/p/17741669.html

相关文章

  • Module build failed (from ./node_modules/css-loader/dist/cjs.js): CssSyntaxError
    问题描述在webpack的时候报错ERRORin./packages/theme-chalk/mixins/mixins.scss(./node_modules/css-loader/dist/cjs.js!./packages/theme-chalk/mixins/mixins.scss)Modulebuildfailed(from./node_modules/css-loader/dist/cjs.js):CssSyntaxError(14:8)......
  • 01-LED指示灯的基本控制
    由上可知此单片机采用74HC138位选用来实现LED选择功能代码如下sbitHC138_A=P2^5;sbitHC138_B=P2^6;sbitHC138_C=P2^7;//此Delay一次大概8usvoidDelay(unsignedintt){while(t--);while(t--);}voidLED_Running(){unsignedchari;//......
  • 错误解决Error: error:0308010C:digital envelope routines::unsupported
    问题原因:查了下原因,主要是nodeJsV17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制,nodeJsv17之前版本没影响,但V17和之后版本会出现这个错误。我的node版本是v18.12.1解决方式(仅windows):在package.json的scripts中新增SETNODE_OPTIONS=--openssl-lega......
  • [官方培训]08-UE动画基础 戴浩军 Epic 笔记
    UE动画基础UE动画概述UE动画功能强大,复杂,灵活不同类型项目对动画系统应用范围各不相同“动画”作为一个宽泛概念,在引擎中有多种实现方式,需要灵活选择影视CG相关常见动画种类浏览骨骼网格体动画(动画序列,变形目标,动画曲线,PoseAsset)物理动画(刚体,布料,破碎,实时毛发模拟)顶点......
  • 408---十字链表法
    一、十字链表法画法参考: https://www.bilibili.com/video/BV1hV411t7SC/?spm_id_from=333.337.search-card.all.click&vd_source=87f7ad8544d4c3ad070c5c2ff28b7698方法就是先画出邻接表然后从头接点开始连接其相应的弧结点,如图,V1头节点的第二个数据项去连接弧结点的第三个......
  • # 2023-2024-1 20231308 《计算机基础与程序设计》第二周学习总结
    2023-2024-120231308《计算机基础与程序设计》第二周学习总结作业信息作业课程2023-2024-1-计算机基础与程序设计作业要求2023-2024-1计算机基础与程序设计第二周作业这个作业的目标学会两本教材第一章的内容,掌握gcc和gdb基本操作作业正文https://www.cnblo......
  • Torch not compiled with Cuda enabled 解决办法
    确保下方指令运行有效:nvcc--version进入指定虚拟环境下运行下方指令:condainstallpytorch==1.11.0torchvision==0.12.0torchaudio==0.11.0cudatoolkit=11.3-cpytorch参考来源......
  • LINUX:FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.
     如图,问题表现为linux中可直接通过hive进行数据插入但在通过datagrip却更改不了此时,可能时yarn的运行分配的内存较少,或堆内存溢出。在yarn-site.xml中更改,以及mapred-site.xml中更改,完成。yarn的<property><name>yarn.scheduler.minimum-allocation-mb</name>......
  • P3477 [POI2008] PER-Permutation 解题报告
    我咕咕咕了这道题半年之久?好像洛谷好多题解都被hack了啊,但是没有被撤。(本题解现有hack均通过)题目链接折叠题干[POI2008]PER-Permutation题目描述Multisetisamathematicalobjectsimilartoaset,buteachmemberofamultisetmayhavemorethanonemem......
  • 算法训练day23 LeetCode669.108.538.
    算法训练day23LeetCode669.108.538.669.修剪二叉搜索树题目669.修剪二叉搜索树-力扣(LeetCode)题解代码随想录(programmercarl.com)递归不能单纯地由根节点的值直接删除单值,需要继续判断子节点是否符合条件classSolution{public:TreeNode*trimBST(T......