LED部门的原理图
led前面有锁存器,这是为了防止led会受到lcd的干扰(lcd也必要用到这些引脚)。
每次想要对led操纵,就必要先打开锁存器,再执行操纵,最后关闭锁存器。
这里必要留意的是,引脚配置为低电平时,LED才会点亮。
具体操纵
1)配置
起主要在stm32CubeMX里面配置PD2为高电平,目的是打开锁存器。
然后配置PC8-PC15都是高电平,默认刚上电是关闭的。
这里给高电平,但是不用上拉电阻。
2)代码
这是截取的一小段代码。必要夸大的是:
-
- 一堆代码
-
- HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
-
- LCD_Init();
- LCD_Clear(Black);
- LCD_SetBackColor(Black);
- LCD_SetTextColor(White);
-
- 一堆代码
复制代码 肯定要在LCD初始化之前关闭锁存器。
这样LCD无论如何操纵也不会对led造成干扰。
这就是你刚才配置的那个 锁存器和PC8-PC15。
3)相干函数
- void led_all_off() //关闭所有的LED灯
- {
- HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
- HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);
- HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
- }
- void led_all_on() //打开所有的LED灯
- {
- HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
- HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 0);
- HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
- }
- void led_on(int n) //只打开某一个LED灯(n取值为 1 ~ 8)
- {
- HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
- HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);
- HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7 << n, 0);
- HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
- }
- void led_status(unsigned char c) //打开一部分LED灯(传入的8位数据分别控制8个灯)
- {
- HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
- GPIOC -> ODR = (c << 8);
- HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |