提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
此实验是实现基于STM32F10X系列芯片的流水灯效果。
一、用到的软件
项目构建工具:CubeMX
代码编辑工具:Keil uVison5
电路仿真工具:Proteus 8
(相信看到这篇文=章的你应该都会用这些软件了
二、实验步骤
1.仿真电路图
此电路右边k1–k4按钮分别单独控制LED1–LED4,最后一个按钮实现小灯的流水闪烁
2.实验主要程序
代码如下(仅供参考):
void HAL_GPIO_EXIT_Callback()
{
int i = 0;
// HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
// HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
// HAL_Delay(50);
//
// HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
// HAL_GPIO_TogglePin(LED4_GPIO_Port, LED4_Pin);
// HAL_Delay(50);
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_9) != init9)
{
for(;i < 1;++i)
{
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
HAL_Delay(50);
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
HAL_Delay(50);
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
HAL_Delay(50);
HAL_GPIO_TogglePin(LED4_GPIO_Port, LED4_Pin);
HAL_Delay(50);
}
init9 = !init9;
}
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_5) == RESET)
{
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
HAL_Delay(50);
}
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_6) == RESET)
{
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
HAL_Delay(50);
}
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_7) == RESET)
{
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
HAL_Delay(50);
}
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_8) == RESET)
{
HAL_GPIO_TogglePin(LED4_GPIO_Port, LED4_Pin);
HAL_Delay(50);
}
}
3.实验结果演示
更多的一些流水显示效果可根据实验要求进行修改
(有不足的地方或是问题也欢迎大家指正
源码地址:https://github.com/forward-spark/waterFallLight
总结
通过本次实验,熟悉了keil仿真软件、proteus仿真软件的使用。了解并熟悉了STM32F10X系列的I/O口和LED灯的电路结构,学会了构建简单的流水灯电路以及简单的程序编写。掌握了STM32F10X系列的I/O口的编程方法和使用I/O口进行输入输出的注意事项。对使用HAL库进行编程更加熟练。