目录
cube新建工程
GPIO输出与LED模块
推挽输出模式push-pull
开漏输出模式open-drain
LED原理
程序
cube新建工程
时钟树配置:一般使用内部时钟。
GPIO输出与LED模块
输入0,输出GND;输入1,输出3.3V。
P-MOS管高电平导通,低电平截止。
N-MOS管低电平导通,高电平截止。
GPIO有两种输出模式,分别是推挽输出模式和开漏输出模式:
推挽输出模式push-pull
由P-MOS和N-MOS组成推挽结构,一个导通另一个截止,可以输出高电平或低电平,具有驱动能力20mA左右。
开漏输出模式open-drain
只用N-MOS,只能输出低电平,输出高电平的话需要外接上拉电阻。
LED原理
这个锁存器相当于一个门锁,PD2相当于钥匙,采用共阳接法,即LED负极接低电平点亮。
PD2是高电平,D、Q电平相同,PD2是低电平,D的数据不会影响到Q。所以需要先给PC口赋值,在打开门锁,再关闭门锁,让Q端数据保持稳定。
LD1 | PC8 | 0x01 |
LD2 | PC9 | 0x02 |
LD3 | PC10 | 0x04 |
LD4 | PC11 | 0x08 |
LD5 | PC12 | 0x10 |
LD6 | PC13 | 0x20 |
LD7 | PC14 | 0x40 |
LD8 | PC15 | 0x80 |
程序
#include "led.h"
void LED_Control(u8 led_ctrl)
{
//先熄灭所有LED
HAL_GPIO_WritePin (GPIOC ,GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15 ,GPIO_PIN_SET );//PC8-PC15全部输出高电平,全熄灭
// HAL_GPIO_WritePin (GPIOC ,0xff00 ,GPIO_PIN_SET );
HAL_GPIO_WritePin (GPIOD ,GPIO_PIN_2 ,GPIO_PIN_SET ); //打开锁存器
HAL_GPIO_WritePin (GPIOD ,GPIO_PIN_2 ,GPIO_PIN_RESET );//关闭锁存器
//根据led_ctrl来点亮对应的LED
HAL_GPIO_WritePin(GPIOC,led_ctrl<<8,GPIO_PIN_RESET);
HAL_GPIO_WritePin (GPIOD ,GPIO_PIN_2 ,GPIO_PIN_SET ); //打开锁存器
HAL_GPIO_WritePin (GPIOD ,GPIO_PIN_2 ,GPIO_PIN_RESET );//关闭锁存器
}
/* USER CODE BEGIN 0 */
// LED执行程序
__IO uint32_t ledTick = 0;
u8 led_ctrl = 0xff;
void LED_Process(void)
{
if(uwTick - ledTick < 100) return ;
ledTick = uwTick;
LED_Control(led_ctrl);
led_ctrl = ~led_ctrl;
}
/* USER CODE END 0 */
0x55间隔点亮。。。。。。。。
以上就是点灯的相关内容=======================