全面学习STM32G431RBT6微控制器的指南

学习STM32G431RBT6

初入茅庐之第一次CubeMX的使用,工程结构框架的创建与LED的点亮。


温馨提示:本人第一次创作,也是第一次学习有关嵌入式的知识,本文内容均为个人见解,如有错误,欢迎指正。

文章目录

  • 学习STM32G431RBT6
  • 一、CubeMX的使用以及结构框架的创建
  • 二、LED的点亮
  • 1.led.c
  • 2.led.h
  • 3.main.c
  • 总结

  • 一、CubeMX的使用以及结构框架的创建



    首先打开STM32CubeMX,创建一个新的工程,点击File→New Project。


    在Part Number中直接搜索STM32G431RB。我们选择STM32G431RBTx即可。
    接下来我们开始创建结构框架并为点亮LED做准备。首先在左边选项栏中找到System Core→RCC
    一般情况下选择HSE或者LSE均可,但对于LED的话我们需要用到PC14和PC15这两个引脚,但如果选择LSEpin脚PC14和PC15均被占用,为了不更加复杂,我们使用HSE→Crystal/Ceramic Resonator,这是为了选择使用外部晶振。

    对于外部晶振STM32G431RBT6的外部晶振为24Mhz,而且我们一般使用的系统时钟为80Mhz


    工程名字我们设为LED,新建一个文件夹LED_TEST,放置工程。对于Toolchain/IDE,我们用的keil uVersion5来编译的软件,因此我们选择MDK-ARM,Min Version我们选择V5,图中打叉的位置把对号取消掉,因为我们只有1.2.0的包,点击Browse选择V1.2.0的包。

    接下来我们在Code Generator中选择如图选项,这是为了生成.c与.h文件。整个结构框架我们差不多就创建好了。
    接下来我们为了点亮LED,我们要返回来设置PIN口,LEDPIN口为PC8~PC15还有一个PD2,类似于锁存器的锁,当其为高电平时,锁被打开,Q=D,也就是对应PC8的值赋给1Q等等,当其为低电平时,Q会保持不变,他不会因为D是高或低电平而改变。

    我们根据上图依次为PC8~PC15以及PD2,左键并选择(推挽)输出即可。再点击创建即可,我们对于LED的结构框架我们创建完毕,接下来我们要写程序了。

    二、LED的点亮

    我们打开我们创建的结构框架文件,我们可以对其创建一个副本(以防万一)我们打开结构框架文件,首先进行编译。发现会有一行代码报错,

    HAL_PWREx_DisableUCPDDeadBattery();
    

    上网搜索查到这好像是1.2.0包的一个bug,我们可以对其直接注释掉,因为它并不影响。

    我们先点击魔术棒,更改debug的设置选择CMSIS-DAP Debugger。接下来我们来编程led的代码,代码如下:

    1.led.c

    代码如下:

    #include "led.h"
    void led_control(uint8_t led_ctrl1)
    {
    	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
    	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
    	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
    		
    	HAL_GPIO_WritePin(GPIOC,led_ctrl1<<8,GPIO_PIN_RESET);
    	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
    	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
    
    }
    
    

    2.led.h

    代码如下:

    #ifndef _LED__H
    #define _LED__H
    #include "main.h"
    void led_control(uint8_t led_ctrl1);
    #endif
    
    

    3.main.c

    代码如下:

    #include "led.h"
    
    
    for(int i=0;i<8;i++)
    	  {
    		  led_control(0x01<<i);
    		  HAL_Delay(1000);
    	  }
    

    只需在main.c里面添加上面两行代码即可,当然这个是流水灯,对于点灯我们只需要调用led.c里面的函数并进行赋值即可,类似于下面这种,流水灯赋值的形式,上面那种流水灯则是用了移位的方式,代码更简洁一点。

    代码如下:

    #include "led.h"
    
    	  led_control(0x01);
    	  HAL_Delay(1000);
    	  led_control(0x02);
    	  HAL_Delay(1000);
    	  led_control(0x04);
    	  HAL_Delay(1000);
    	  led_control(0x08);
    	  HAL_Delay(1000);
    	  led_control(0x10);
    	  HAL_Delay(1000);
    	  led_control(0x20);
    	  HAL_Delay(1000);
    	  led_control(0x40);
    	  HAL_Delay(1000);
    	  led_control(0x80);
    	  HAL_Delay(1000);
    
    

    总结

    以上就是今天我主要学习的内容,本文仅仅简单介绍了stm32CubeMX的使用以及工程结构框架的建立以及流水灯实现的两种方式。(注:本人只是个学生,如有错误请指正!谢谢您的阅读!)

    物联沃分享整理
    物联沃-IOTWORD物联网 » 全面学习STM32G431RBT6微控制器的指南

    发表评论