嵌入式开发:使用STM32CubeMX 和 Keil uVision5实现数码管9 您所在的位置:网站首页 数码管实验程序 嵌入式开发:使用STM32CubeMX 和 Keil uVision5实现数码管9

嵌入式开发:使用STM32CubeMX 和 Keil uVision5实现数码管9

2024-06-30 15:21| 来源: 网络整理| 查看: 265

一、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); } while (1) { for(int y = 9; y >= 0; y--){ SMG(y); //数码管显示 HAL_Delay(1000); //HAL库的延时函数,延时1000ms }

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

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有