|
本帖最后由 LaoFan 于 2021-4-24 22:36 編輯
for延時(shí)
while (1)
{ int i=0;
for(i=0;i<5000000;i++);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
for(i=0;i<5000000;i++);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
輪詢記數(shù)點(diǎn)燈
while (1)
{
count++;
if(count>=500000)
{
count=0;
if(flg==0)
{
flg=1;
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);//高電平
}
else
{
flg=0;
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);//低電平
}
}
輪詢計(jì)數(shù)并列點(diǎn)燈
while (1)
{
count++;
if(count>=500000)
{
count=0;
if(flg==0)
{
flg=1;
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);//高電平
}
else
{
flg=0;
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);//低電平
}
}
count1++;
if(count1>=1000000)
{
count1=0;
if(flg1==0)
{
flg1=1;
HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET);//高電平
}
else
{
flg1=0;
HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET);//低電平
}
}
按鍵消抖傳統(tǒng)延時(shí)
while (1)
{
switch(step)
{
case 0:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET)//按鍵是否按下
{
for(uint32_t i=0;i<10000;i++);//延時(shí)
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET)//按鍵是否按下
{
printf("按鍵按下\n");
step=1;
}
}
}
break;
case 1:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)//按鍵是否松開
{
for(uint32_t i=0;i<10000;i++);//延時(shí)
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)//按鍵是否松開
{
printf("按鍵松開\n");
step=0;
}
}
}
}
按鍵消抖狀態(tài)機(jī)方式
while (1)
{
switch(step)
{
case 0:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET)//按鍵是否按下
{
count++;
if(count>=10000)//延時(shí)
{
count=0;
printf("按鍵按下\n");
step=1;
}
}
else
{
count=0;
}
}
break;
case 1:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)//按鍵是否松開
{
printf("按鍵松開\n");
step=0;
}
}
break;
}
|
|