概述
最近在咸鱼上买了一块启明欣欣的STM32板子,准备在上面测试open62541和CANopen,到货后如下图,
找商家要了资料,然后运行一个LED灯的实验来简单测试下板子,本文记录一下这个过程。
一 准备
安装Keil 5.35,安装过程很简单,安装完之后自带CMSIS 5.5.0版本,
然后安装对应的pack包,由于芯片是STM32F407ZGT6,故下载对应的F4包,如下,
下载完毕后导入这个包。
然后就是创建工程,这个过程不赘述,网上各种教程,创建完毕之后本人把编译器改为版本5如下,
默认是版本6,但是版本6编译CMSIS时会报warning,网上查了下5和6的区别,6会编译的更快,不过对我来说稳定性比较重要,所以改成版本5
最后是选择runtime环境,即如下按钮,
点击之后进行选择,勾选CMSIS->CORE
勾选Device->Startup和Device->STM32Cube Framework(API) -> Classic,
在Device->STM32Cube HAL下,勾选Common,Cortex,GPIO,PWR和RCC
最后添加main.c到工程里,这样准备工作就结束了。
由于工程比较简单,所以就没用CubeMX了。
二 代码
本来想使用商家提供的代码,打开一看是很老的代码,CMSIS应该还是3.x的版本,老的接口和新的接口已经不兼容了,于是自己琢磨一下重新编写了,代码如下,
#include "stm32f4xx.h"
#include "stm32f4xx_hal_gpio.h"
#include "stm32f4xx_hal_rcc_ex.h"
int main(void)
{
__HAL_RCC_GPIOE_CLK_ENABLE(); // 开启PE的时钟
__HAL_RCC_GPIOG_CLK_ENABLE(); // 开启PG的时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.Pin = GPIO_PIN_3 | GPIO_PIN_4;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;// 输出,push pull模式
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStructure.Pull = GPIO_PULLUP; // 上拉
HAL_GPIO_Init(GPIOE, &GPIO_InitStructure); // 初始化PE3和PE4
GPIO_InitStructure.Pin = GPIO_PIN_9;
HAL_GPIO_Init(GPIOG, &GPIO_InitStructure); // 初始化PG9
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3 | GPIO_PIN_4, GPIO_PIN_RESET); // 让PE3和PE4输出低电平,可以点亮LED
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_9, GPIO_PIN_RESET); // 让PG9输出低,可以点亮LED
while (1)
{
// 延时 ~0.5s
for(uint32_t i = 0; i < 2000; ++i)
{
for(uint32_t j = 0; j < 1000; ++j);
}
// 翻转PE3、PE4和PG9的电平
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_9);
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_3);
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_4);
}
}
编译后使用STLink下载到板子里,复位后运行,发现三个LED灯可以闪烁了。
最后
以上就是呆萌河马为你收集整理的启明欣欣STM32开发板闪烁LED实验的全部内容,希望文章能够帮你解决启明欣欣STM32开发板闪烁LED实验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复