基于STM32F103xx的流水灯显示仿真
下面展示一些 内联代码片
。
相关宏定义根据代码相信可以很容易解决,这里就不赘述^ – ^
方案一
// An highlighted block
GPIO_TypeDef*GPIO_PORT[]={ LED1_GPIO_Port,
LED2_GPIO_Port,
LED3_GPIO_Port,
LED4_GPIO_Port,
LED5_GPIO_Port,
LED6_GPIO_Port,
LED7_GPIO_Port,
LED8_GPIO_Port};
const uint16_t GPIO_PIN[]={ LED1_Pin,
LED2_Pin,
LED3_Pin,
LED4_Pin,
LED5_Pin,
LED6_Pin,
LED7_Pin,
LED8_Pin,};
void LED_Control(uint8_t LED_Number)
{
HAL_GPIO_WritePin(GPIOC, LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin
|LED5_Pin|LED6_Pin|LED7_Pin|LED8_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIO_PORT[LED_Number], GPIO_PIN[LED_Number],GPIO_PIN_RESET);
}
主函数部分
int LED_Number = 0;//定义变量并初始化
int main()
{
while(1)
{
LED_Control(LED_Number);//函数调用
HAL_Delay(500);//延时ms
LED_Number++;
if(LED_Number == 8)
{
LED_Number=0;
}
}
}
方案二
uint8_t count[]={ 0xfe,//1111 1110
0xfd,//1111 1101
0xfb,//1111 1011
0xf7,//1111 0111
0xef,//1110 1111
0xdf,//1101 1111
0xbf,//1011 1111
0x7f //0111 1111
};
void GPIO_Write(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin,uint16_t Portval)
{
assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->ODR=Portval;
}
void display(uint8_t num)
{
GPIO_Write(GPIOC, LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin
|LED5_Pin|LED6_Pin|LED7_Pin|LED8_Pin, count[num]);
}
主函数部分
// An highlighted block
int main()
{
uint8_t i = 0;
while(1)
{
for(i = 0; i < 8; i++)
{
display(i);
HAL_Delay(500);
}
}
}
结语
希望对你们有所帮助^ – ^