网站首页 > 博客文章 正文
一、开发环境相关软件包
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连载系列。
猜你喜欢
- 2024-10-25 388.C#使用RJCP.DLL.SerialPortStream进行串口通信
- 2024-10-25 嵌入式入门级学习——基于国产平台T3开发板的测试教程(6)
- 2024-10-25 H3C交换机通过MAC地址定位设备所在交换机端口步骤
- 2024-10-25 干货!PS端裸机与FreeRTOS案例开发之裸机lwIP_Demo案例
- 2024-10-25 Python读取Arduino的串口输出的数据?
- 2024-10-25 做网络那么多年,连以太网接口和串口都分不清?本文值得一看!
- 2024-10-25 QT中级(7)- 串口工具(qt串口类编程)
- 2024-10-25 MAC 10.14 安装教程-制作安装EFI文件
- 2024-10-25 FT232串口线和普通串口线有何区别?
- 2024-10-25 TI Sitara系列 AM64x开发板——TSN通信测试手册(上)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)