案例1
数码管应用,数字信号的输出,我们用LL标准库函数编写,成组定义相对简单;
首先,我们在主函数里定义全局变量共阳极数码管数组,以及变量“i”,以待调用。
uint8_t seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint8_t i;
其次,如果我们要做一个0~9,每5毫秒那么直接在循环函数里写程序
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
for(i=0;i<10;i++)
{
LL_GPIO_WriteOutputPort(GPIOB, seg[i]);
HAL_Delay(500) ;
}
}
案例2
两个按键控制数码管数字加减
我们调用PB组0~7口配置为
uint8_t seg1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint8_t key1,key2,i;
按键key1使数码管加1,按键key2使数码管减一:
while (1)
{
/* USER CODE END WHILE */
key1=HAL_GPIO_ReadPin(A1_GPIO_Port, A1_Pin);
if(key1==0){
while(key1==0){key1=HAL_GPIO_ReadPin(A1_GPIO_Port, A1_Pin);}
i++;if(i==10){i=0;}
}
LL_GPIO_WriteOutputPort(GPIOB, seg1[i]);
key2=HAL_GPIO_ReadPin(A2_GPIO_Port, A2_Pin);
if(key2==0){
while(key2==0){key2=HAL_GPIO_ReadPin(A2_GPIO_Port, A2_Pin);}
i--;if(i==255){i=9;}
}
LL_GPIO_WriteOutputPort(GPIOB, seg1[i]);
/* USER CODE BEGIN 3 */
}