百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

G4板卡分享 | 详尽的G431RB开发板介绍之二软件工具及环境搭建

liebian365 2024-11-14 18:06 26 浏览 0 评论

一、开发环境相关软件包

STM32G4系列芯片是ST最新的推出的产品,与芯片、板卡配套的软件开发工具还有待逐步完善。目前我手边能获取到的软件开发环境的有STM32CubeIDE 1.1.0、KEIL 以及AC6。这几款开发工具都做了更新,各自的便利性对比如下,各位根据自己现有的系统环境进行相关程序的下载和搭建:

1、 首先说STM32CubeIDE,最新的版本更新到1.1.0

在www.ST.com 官网的Search中输入STM32CubeIDE,在“Tools & Software”,选择“STM32CubeIDE”,

进入下载页面。

根据所使用的操作系统选择下载程序。


这里分别有Debian系、通用Linux、以及RPM包的系统安装文件,也有macOS、Windows下的安装文件,根据各自所需的环境下载对应包。工具下载完毕后分别进行安装,安装界面略过。

2、 如果是KEIL工具,就需要到 KEIL官网更新对应的工具开发包,下载地址链接:https://keilpack.azureedge.net/pack/Keil.STM32G4xx_DFP.1.1.0.pack ,如果下载太慢可以用其它下载工具进行下载,另外其它包如果缺失可以在STMCU.org论坛中, [Keil下载链接] 从keil的包下载非常慢,清单更新2019-10-28 帖子里根据对应地址下载最新的Keil包。

3、Workbench for STM32(AC6) 是在Eclipse的开发环境,在官网https://www.openstm32.org 下载System Workbench for STM32(需要注册),下载界面如下:


目前最新的版本是:April 12, 2019 at 16:41:04 的V2.9。


4、ST-LINK固件更新:

STM32G431RB开发板在将ST-LINK的主控芯片升级为STM32F723IEK6后,相应的ST-LINK固件也更新称为ST-LINK-V3E,ST官方提供的stsw-link007也做了相应升级,通过USB接口可直接升级板载固件。

该项目地址:

https://www.st.com/en/development-tools/stsw-link007.html

二、软件的调试和Helloworld代码

以上几款软件相比之下,集成度最高还是STM32CubeIDE,插件的使用也是最新的;keil的包管理虽然方便但其在线更新比较慢,要下载对应的包手工升级,确实比较麻烦;Workbench for STM32(AC6)最后的版本更新在2019年4月,最新的G4xx开发包V 1.1.0的版本并不支持。

这里先用STM32CubeIDE开发HelloWorld验证一下相关包和软硬件环境,步骤如下:

1、新建一个STM32 Project工程, New>>>>选择STM32 Project;

2、在系统Download MCU的列表清单后,进入CubeMX的页面;

3、在CubeMX初始页面选择工程所需的MCU型号后,点击下一步:


4、输入工程名称:HelloWorld,后点击下一步:

注意:这里红框部分,如果没有自动找到对应版本的固件包,需要下载或手工制定固件包的下载目录(根据各自CubeMX的安装环境不同而不同):

5、在系统自动创建成功后,在打开关联透视图提示菜单中,点击“Yes”,带有Helloworld.ioc文件的STM32工程就建好了:

(关联菜单)

(项目初始界面)

6、点击Helloworld.ioc后,能看到完美的嵌入到STM32CubeIDE的窗体中的CubeMX页面:

7、选择所需功能组件的顺序如下:

1)RCC,选择晶振

2)因板子带时钟晶振,激活RTC时钟功能

3)根据电路图得知,与ST-LINK3芯片关联的VCP(虚拟串口)是LPUART1低功耗串口1;

4)选择MCU对应的引脚PIN功能,如下图:引脚功能设置要参考Nucleo-G431RB的原理图:


几个重要外设的原理图如上图,芯片的引脚功能选择入下图绿色部分:

5)相关的功能设置,如下:

a、GPIO设置参数:

b、串口参数设置:

c、RCC设置:

d、ST-LINK接口配置:

e、中断配置:

f、RTC时钟配置为LSE:


g、主频配置最大的170MHz


h、项目输出的内容一览,保存或关闭窗体,会自动生成相应代码

6、在以下程序文件里添加代码:

main.h 添加的代码内容如下:

/* USER CODE BEGIN EM *///非中断延时枚举//分别延迟512、256、128、64、32、16、8、4、2、1、0enum Enum_Delay { Delay_512 = 512, Delay_256 = 256, Delay_128 = 128, Delay_64 = 64, Delay_32 = 32, Delay_16 = 16, Delay_8 = 8, Delay_4 = 4, Delay_2 = 2, Delay_1 = 1, Delay_0 = 0};/* USER CODE END EM */……/* USER CODE BEGIN Private defines */#define ON 1 //定义ON#define OFF 0 //定义OFF
//设置亮灯和关
#define LED(STA) (STA)?HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_RESET)//闪亮LED#define ToggleLED HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);/* USER CODE END Private defines */……

▲ 左右移动,查看完整代码

main.c

/* USER CODE BEGIN PFP */
void KeyPass(void);
/* USER CODE END PFP */
/* USER CODE BEGIN 0 */
static enum Enum_Delay delay = Delay_512;
//static uint32_t EXTI_Times = 0;
volatile FunctionalState EXTI_State = DISABLE;
/* USER CODE END 0 */
……..
int main(void)
{ 
 /* USER CODE BEGIN 1 */ 
 uint8_t sta = ON; 
 /* USER CODE END 1 */
 ……
 
/* Infinite loop */ 
 /* USER CODE BEGIN WHILE */
 while (1) {
 printf("Hello World!!! Delay is %d\n",delay); 
 /* USER CODE END WHILE */
 /* USER CODE BEGIN 3 */
 LED(sta); 
 sta = !sta; 
 HAL_Delay(delay);
 } 
 /* USER CODE END 3 */
 ……
 /* USER CODE BEGIN 4 */
 void KeyPass(void) { 
 switch (delay) { 
 case Delay_512: { 
 delay = Delay_256; 
 break; 
 case Delay_256: { 
 //延时重新循环512-->256-->128....1-->0-->512 循环 其余 
 delay = Delay_512; 
 break; 
 } 
 }
 }
 /** 
 * GPIO中断回调函数 
 * @param GPIO_Pin 
 */
 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { 
 KeyPass(); 
 }
}
#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 
* set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

/** 
* @brief Retargets the C library printf function to the USART. 
* @param None 
* @retval None
*/
PUTCHAR_PROTOTYPE
{ 
 /* Place your implementation of fputc here */ 
 /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */ 
 HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF); 
 return ch;
}
/* USER CODE END 4 */

▲ 左右移动,查看完整代码

编译后,连接开发板,在STM32CubeIDE中用Debug方式将代码下载到Nucleo-G431RB开发板中。


打开一个串口调试工具,打开串口后,能在串口工具中看见以下内容,开发板LD2灯伴随着串口信息跳动一闪一闪,当用户按键时LD2的闪烁频率进行转换,串口工具中跳动得数值也随着变化。

(串口显示)

(LED2交替闪烁)

开发环境和板子的搭配验证完成,实现可控、可编辑的,为后面的试验提供基础支撑。下一节将会更新CoreMark跑分对比测试,敬请关注G4连载系列

相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: