学习STM32G431RBT6

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

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

文章目录

学习STM32G431RBT6一、CubeMX的使用以及结构框架的创建二、LED的点亮1.led.c2.led.h3.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<

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的使用以及工程结构框架的建立以及流水灯实现的两种方式。(注:本人只是个学生,如有错误请指正!谢谢您的阅读!)

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: