硬件设计
链接:https://pan.baidu.com/s/1XzlxgI1GYLi0o0NwNEUZPg
提取码:dqbk
仿真图如下所示:
总共8位LED组成的流水灯具有加快、放慢、换方向1以及方向2等功能
程序设计
#include "led.h"
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
static unsigned char i=0;
static int j=7;
static unsigned char flag = 0;
static unsigned char temp = 0;
static unsigned char dri = 0;
static unsigned char timcontrol=8;
static unsigned char timcrl=8;
if(htim==(&htim1))
{
keyscan();
}
if(htim==(&htim3))
{
if(mode==0)
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_7|GPIO_PIN_5
|GPIO_PIN_6|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_SET);
if(mode==1&&flag>=timcontrol){
flag=0;
GPIOB->ODR =~(0x0001<<i);
i++;
if(i>=8)
i=0;
}
if(mode==2&&temp>=timcrl){
temp=0;
GPIOB->ODR =~(0x0001<<j);
j--;
if(j<=-1)
j=7;
if(dri==0)
timcrl++;
if(dri==1)
timcrl--;
if(timcrl>=14)
dri=1;
if(timcrl<=2)
dri=0;
}
if(mode==3) {
timcontrol++;
mode=1;
if(timcontrol>=14)
timcontrol=14;
}
if(mode==4){
timcontrol--;
mode=1;
if(timcontrol<=2)
timcontrol=2;
}
flag++;
temp++;
}
}
.
.