学习STM32G431RBT6
初入茅庐之第一次CubeMX的使用,工程结构框架的创建与LED的点亮。
温馨提示:本人第一次创作,也是第一次学习有关嵌入式的知识,本文内容均为个人见解,如有错误,欢迎指正。
一、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
代码如下:文章来源:https://www.toymoban.com/news/detail-811521.html
#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的使用以及工程结构框架的建立以及流水灯实现的两种方式。(注:本人只是个学生,如有错误请指正!谢谢您的阅读!)文章来源地址https://www.toymoban.com/news/detail-811521.html
到了这里,关于关于STM32G431RBT6的学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!