STM32开发入门(一)——流水灯

   日期:2021-02-02     浏览:215    评论:0    
核心提示:stm32是性能强大,但其开发难度又显著高于Arduino等单片机。本文将通过流水灯程序,介绍stm32开发的一些基本操作。基本介绍常见stm的编程方式有三种:寄存器式、标准库式、HAL库式。其中HAL库上手较为简单。本文将以HAL库式为基础介绍。软件Keil 5(单片机集成开发环境)STM32CubeMX(自动配置stm32编程的相关文件)FLYMCU(stm32串口下载软件,也可用ST-LINK代替)XCOM(串口监视器)准备打开图中的“File”,新建一个stm32项目(“Ne

stm32性能强大,但其开发难度又显著高于Arduino等单片机。本文将通过流水灯程序,介绍stm32开发的一些基本操作。

基本介绍

常见stm的编程方式有三种:寄存器式、标准库式、HAL库式。其中HAL库上手较为简单。本文将以HAL库式为基础介绍。

软件

  • Keil 5(单片机集成开发环境)
  • STM32CubeMX(自动配置stm32编程的相关文件)
  • FLYMCU(stm32串口下载软件,也可用ST-LINK代替)
  • XCOM(串口监视器)

准备

打开图中的“File”,新建一个stm32项目(“New Project")。

在输入框中搜索自己的stm32芯片,双击创建新项目。

选择左边菜单栏中“System Core”的SYS、GPIO和RCC。

在SYS中选择Debug方式为“Serial Wire”。

在RCC中选择“Crystal/Ceramic Resonator”

点击右边芯片的引脚,可以看到每一个引脚的用法。此处我们选择引脚的“GPIO_Output”(通用型输出)模式。


依次选择每个引脚的模式,在该实验中,我们共需要10个模式为“GPIO_Output”的引脚。设置好后引脚会有绿色标记。


打开“GPIO”,设置引脚的输出模式为“Output Push Pull”(推挽输出模式)。


打开“Project Manager”,编辑文件名称,保存路径。注意设置IDE为MDK-ARM,版本为V5。点击“GENERATE CODE"。

打开keil,找到“main.c"文件。我们可以找到核心代码区:

int main(void)
{ 
  

  

  

  
  HAL_Init();

  

  

  
  SystemClock_Config();

  

  

  
  MX_GPIO_Init();
  
  //int tmp=0;
  

  
  
  while (1)
  { 
    

    
		
  }
  
}

在while循环之前,我们通常填入需要初始化的变量、条件;在while循环中,我们填入需要循环执行的代码。特别需要注意的是,代码需要写在之间。否则在代码刷新或重置后,不在此范围内的新编代码会丢失。

代码

在核心代码取输入以下代码:

int main(void)
{ 
  

  

  

  
  HAL_Init();

  

  

  
  SystemClock_Config();

  

  

  
  MX_GPIO_Init();
  

  

  
  
  while (1)
  { 
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET);
		
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_RESET);
		
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET);
		
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);
		
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_8,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_8,GPIO_PIN_RESET);
		
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_9,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_9,GPIO_PIN_RESET);
		
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_10,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_10,GPIO_PIN_RESET);
		
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_11,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_11,GPIO_PIN_RESET);
		
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_RESET);
		
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_13,GPIO_PIN_SET);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_13,GPIO_PIN_RESET);
    

    
  }
  
}

按照程序中的定义方式进行接线。同时点击左上角的“Build”,编译程序。

若程序编译正确,使用FLYMCU打开程序的hex文件(在MDK-ARM中),点击“开始编程”,将程序上传于开发板。

上传成功后,点击开发板上的“RESET”按钮,即可观察到流水灯工作。

实验效果

STM32-流水灯

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服