你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

详细讲解STM32G4的软件工具和环境搭建

[复制链接]
gaosmile 发布时间:2020-3-4 16:57
一、开发环境相关软件包
STM32G4系列芯片是ST最新的推出的产品,与芯片、板卡配套的软件开发工具还有待逐步完善。目前我手边能获取到的软件开发环境的有STM32CubeIDE 1.1.0、KEIL 以及AC6。这几款开发工具都做了更新,各自的便利性对比如下,各位根据自己现有的系统环境进行相关程序的下载和搭建:
1、 首先说STM32CubeIDE,最新的版本更新到1.1.0

www.ST.com 官网的Search中输入STM32CubeIDE,在“Tools & Software”,选择“STM32CubeIDE”,
微信图片_20200304164424.png

进入下载页面。
微信图片_20200304164432.png

根据所使用的操作系统选择下载程序。
微信图片_20200304164450.png

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

2、 如果是KEIL工具,就需要到 KEIL官网更新对应的工具开发包,下载地址链接:http://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的开发环境,在官网http://www.openstm32.org 下载System Workbench for STM32(需要注册),下载界面如下:
微信图片_20200304164457.png

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

微信图片_20200304164505.jpg

4、ST-LINK固件更新:
STM32G431RB开发板在将ST-LINK的主控芯片升级为STM32F723IEK6后,相应的ST-LINK固件也更新称为ST-LINK-V3E,ST官方提供的stsw-link007也做了相应升级,通过USB接口可直接升级板载固件。
该项目地址:http://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;
微信图片_20200304164513.png

2、在系统Download MCU的列表清单后,进入CubeMX的页面;
微信图片_20200304164520.png

3、在CubeMX初始页面选择工程所需的MCU型号后,点击下一步:
微信图片_20200304164527.jpg

4、输入工程名称:HelloWorld,后点击下一步:
微信图片_20200304164534.png
注意:这里红框部分,如果没有自动找到对应版本的固件包,需要下载或手工制定固件包的下载目录(根据各自CubeMX的安装环境不同而不同):
微信图片_20200304164542.png

5、在系统自动创建成功后,在打开关联透视图提示菜单中,点击“Yes”,带有Helloworld.ioc文件的STM32工程就建好了:
微信图片_20200304164549.png
(关联菜单)
微信图片_20200304164555.png
(项目初始界面)
6、点击Helloworld.ioc后,能看到完美的嵌入到STM32CubeIDE的窗体中的CubeMX页面:
微信图片_20200304164602.jpg

7、选择所需功能组件的顺序如下:
1)RCC,选择晶振
微信图片_20200304164609.png

2)因板子带时钟晶振,激活RTC时钟功能
微信图片_20200304164615.png

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

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

微信图片_20200304164642.png

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

5)相关的功能设置,如下:a、GPIO设置参数:
微信图片_20200304164655.png

b、串口参数设置:
微信图片_20200304164701.png

c、RCC设置:
微信图片_20200304164707.png

d、ST-LINK接口配置:
微信图片_20200304164714.png

e、中断配置:
微信图片_20200304164720.png

f、RTC时钟配置为LSE:
微信图片_20200304164725.png

g、主频配置最大的170MHz
微信图片_20200304164732.png

h、项目输出的内容一览,保存或关闭窗体,会自动生成相应代码
微信图片_20200304164739.png
6、在以下程序文件里添加代码:
微信图片_20200304164746.png

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开发板中。
微信图片_20200304164753.png

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

微信图片_20200304164759.png
(串口显示)

微信图片_20200304164805.jpg 微信图片_20200304164812.jpg
(LED2交替闪烁)

开发环境和板子的搭配验证完成,实现可控、可编辑的,为后面的试验提供基础支撑。
收藏 评论0 发布时间:2020-3-4 16:57

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版