嵌入式实验——实现流水点灯效果

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

此实验是实现基于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库进行编程更加熟练。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值