【备赛】点亮LED

打印 上一主题 下一主题

主题 854|帖子 854|积分 2562

LED部门的原理图


led前面有锁存器,这是为了防止led会受到lcd的干扰(lcd也必要用到这些引脚)。
每次想要对led操纵,就必要先打开锁存器,再执行操纵,最后关闭锁存器。
这里必要留意的是,引脚配置为低电平时,LED才会点亮。

具体操纵

1)配置

起主要在stm32CubeMX里面配置PD2为高电平,目的是打开锁存器。
然后配置PC8-PC15都是高电平,默认刚上电是关闭的。

这里给高电平,但是不用上拉电阻。 


2)代码

这是截取的一小段代码。必要夸大的是:
  1. 一堆代码
  2.   HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
  3.   
  4.   LCD_Init();
  5.   LCD_Clear(Black);
  6.   LCD_SetBackColor(Black);
  7.   LCD_SetTextColor(White);
  8.   
  9. 一堆代码
复制代码
 肯定要在LCD初始化之前关闭锁存器。
这样LCD无论如何操纵也不会对led造成干扰。

这就是你刚才配置的那个 锁存器和PC8-PC15。

3)相干函数

  1. void led_all_off() //关闭所有的LED灯
  2. {
  3.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
  4.     HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);
  5.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
  6. }
  7. void led_all_on() //打开所有的LED灯
  8. {
  9.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
  10.     HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 0);
  11.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
  12. }
  13. void led_on(int n) //只打开某一个LED灯(n取值为 1 ~ 8)
  14. {
  15.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
  16.         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);
  17.         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7 << n, 0);
  18.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
  19. }
  20. void led_status(unsigned char c) //打开一部分LED灯(传入的8位数据分别控制8个灯)
  21. {
  22.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
  23.         GPIOC -> ODR = (c << 8);
  24.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
  25. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表