当前位置:   article > 正文

嵌入式开发:使用STM32CubeMX 和 Keil uVision5实现数码管9-0循环显示实验_stm32数码管显示0到9

stm32数码管显示0到9

一、STM32CubeMx实现数码管

1、双击打开STM32CubeMX。
2、点击File选项,在File列表下选择New Project选项新建工程。
在这里插入图片描述
3、在图中所示位置的方框中输入我们使用的芯片型号来搜索芯片
在这里插入图片描述
4、与我们的搜索相关的芯片型号会在这里呈现,我们只需要选择我们需要的即可,这里我们双击第一个STM32F103C8T6即可完成芯片选型。
在这里插入图片描述
5、完成芯片选型之后我们会来到这个界面:

在这里插入图片描述
6、下一步我们先来配置程序下载方式:选中System Core清单下的SYS选项。在右侧弹出的窗口中有Debug选项,单击Debug选项右侧的小箭头,在下拉列表中选择Serial Wire选项。这一步是配置使用ST-LINK下载程序。
在这里插入图片描述
7、下一步是开启外部时钟。单击左侧列表中的RCC选项,右侧窗口会出现默认为Disable的HSE和LSE两个选项,即外部高速时钟和外部低速时钟。这里我们都选择第三项Crystal/Ceramic Resonator,意思是使用板载的外部晶振作为时钟源。
在这里插入图片描述
8、由于我们需要使用1位数码管来显示,所以需要给数码管配置GPIO。在这里我们给数码管的8个引脚全部配置为输出模式。单击需要配置的引脚,在弹出的列表中选择GPIO_Output。配置成功后引脚会变成绿色。
在这里插入图片描述
9.接下来我们需要配置时钟。点击上方的Clock Configuration选项,来到时钟树的界面。
在这里插入图片描述
10、时钟配置完成后点击上方的Project Manager选项,对工程进行设置。
在这里插入图片描述
配置完这个页面后我们选择左侧的Code Generator选项
在这里插入图片描述

在这里插入图片描述
11、工程已配置完成,单击右上角的GENERATE CODE选项生成代码。
在这里插入图片描述
然后会弹出如下界面
在这里插入图片描述
我们选择中间的选项直接打开工程
在这里插入图片描述

如图所示:左边是已经生成好的相关文件,我们只需要在其中添加我们的代码
12、代码如下:仅供参考,请根据实际情况自行更改。

void SMG(int x){
	//数码管显示0
	if(x == 0)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6,GPIO_PIN_RESET);
	if(x == 0)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
	//数码管显示1
	if(x == 1)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2|GPIO_PIN_3,GPIO_PIN_RESET);
	if(x == 1)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_SET);
	//数码管显示2
	if(x == 2)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_7,GPIO_PIN_RESET);
	if(x == 2)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3|GPIO_PIN_6,GPIO_PIN_SET);
	//数码管显示3
	if(x == 3)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_7,GPIO_PIN_RESET);
	if(x == 3)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5|GPIO_PIN_6,GPIO_PIN_SET);
	//数码管显示4
	if(x == 4)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_RESET);
	if(x == 4)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5,GPIO_PIN_SET);
	//数码管显示5
	if(x == 5)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_RESET);
	if(x == 5)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_SET);
	//数码管显示6
	if(x == 6)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_RESET);
	if(x == 6)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
	//数码管显示7
	if(x == 7)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_PIN_RESET);
	if(x == 7)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_SET);
	//数码管显示8
	if(x == 8)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_RESET);
	//if(x == 8)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_RESET);
	//数码管显示9
	if(x == 9)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_RESET);
	if(x == 9)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  while (1)
  {
		
		for(int y = 9; y >= 0; y--){
			SMG(y);	//数码管显示
			HAL_Delay(1000); //HAL库的延时函数,延时1000ms
		
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

13.进行编译
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编译成功

如果你在写注释的时候出现?或者乱码,设置一下编码格式
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/220070
推荐阅读
相关标签
  

闽ICP备14008679号