一、开发环境相关软件包 STM32G4系列芯片是ST最新的推出的产品,与芯片、板卡配套的软件开发工具还有待逐步完善。目前我手边能获取到的软件开发环境的有STM32CubeIDE 1.1.0、KEIL 以及AC6。这几款开发工具都做了更新,各自的便利性对比如下,各位根据自己现有的系统环境进行相关程序的下载和搭建:1 }7 W" H, f* h: [$ d1、 首先说STM32CubeIDE,最新的版本更新到1.1.0 4 _6 Y6 `& J! |! R7 T! _4 P 在www.ST.com 官网的Search中输入STM32CubeIDE,在“Tools & Software”,选择“STM32CubeIDE”,: [6 {3 W& U% g0 [9 y0 f+ V: E* B 进入下载页面。 K0 W2 B( W2 j" A/ M% |9 h( c+ o 根据所使用的操作系统选择下载程序。9 Y/ E" i! m) l2 V4 d* x 这里分别有Debian系、通用Linux、以及RPM包的系统安装文件,也有macOS、Windows下的安装文件,根据各自所需的环境下载对应包。工具下载完毕后分别进行安装,安装界面略过。' S0 e1 `$ C, B2 c3 |6 u1 T+ n. T 3、Workbench for STM32(AC6) 是在Eclipse的开发环境,在官网http://www.openstm32.org 下载System Workbench for STM32(需要注册),下载界面如下: 0 q; g/ @( K9 D7 v: a" W+ W 4、ST-LINK固件更新:1 }6 Q" ^% B" L6 f$ }( \8 JSTM32G431RB开发板在将ST-LINK的主控芯片升级为STM32F723IEK6后,相应的ST-LINK固件也更新称为ST-LINK-V3E,ST官方提供的stsw-link007也做了相应升级,通过USB接口可直接升级板载固件。 该项目地址:http://www.st.com/en/development-tools/stsw-link007.html ; r$ ^6 E7 {+ h7 q; x 二、软件的调试和Helloworld代码& Y m; s9 B H* E/ u; c0 Q以上几款软件相比之下,集成度最高还是STM32CubeIDE,插件的使用也是最新的;keil的包管理虽然方便但其在线更新比较慢,要下载对应的包手工升级,确实比较麻烦;Workbench for STM32(AC6)最后的版本更新在2019年4月,最新的G4xx开发包V 1.1.0的版本并不支持。 这里先用STM32CubeIDE开发HelloWorld验证一下相关包和软硬件环境,步骤如下:! r( d5 c/ t+ S) b9 i4 Y8 G7 A% d 1、新建一个STM32 Project工程, New>>>>选择STM32 Project; 9 R! B1 P5 C8 t& B U 2、在系统Download MCU的列表清单后,进入CubeMX的页面;" F# w" V H- O& u: }$ g+ P @2 i6 b 3、在CubeMX初始页面选择工程所需的MCU型号后,点击下一步: z# b; n4 }$ H9 S, ~9 A5 P# b! J0 b, V6 H& x$ e; p 4、输入工程名称:HelloWorld,后点击下一步: c9 m5 t; G o |! j(关联菜单): v1 b/ g! z: w% p8 Q# I (项目初始界面)/ C* f& S6 T! s& o% [- m2 D6 f1 O 1)RCC,选择晶振 1 l6 I4 Q( L. Y0 F 3)根据电路图得知,与ST-LINK3芯片关联的VCP(虚拟串口)是LPUART1低功耗串口1;' Z1 z r. }+ j( R# h0 u3 } 4)选择MCU对应的引脚PIN功能,如下图:引脚功能设置要参考Nucleo-G431RB的原理图:% { R' l1 \9 K: d+ I/ x. V# A% H : I. N/ c' j5 R$ n( ^ b、串口参数设置:3 P; I/ X8 V' g; Y/ |! C c、RCC设置:! h7 X# F8 k6 b- E- U1 S. j- w e、中断配置:0 d1 J/ _$ X, }! p7 ]) I. {; z6 n5 s- _5 i+ f3 Y f、RTC时钟配置为LSE:$ u% P* \# B. W- ^/ o g、主频配置最大的170MHz 3 T( j5 m& K! Z& U6 u h、项目输出的内容一览,保存或关闭窗体,会自动生成相应代码//设置亮灯和关: |. r5 A e7 o #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 */…… ▲ 左右移动,查看完整代码 ( U$ R5 K, R1 d( G/ s& ? main.c
int main(void){ /* USER CODE BEGIN 1 */ uint8_t sta = ON; /* USER CODE END 1 */……2 K2 T5 z( d3 y( @: Y /* 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 */ ▲ 左右移动,查看完整代码 / u5 w- v r% f1 }$ W6 |5 l" a1 h 打开一个串口调试工具,打开串口后,能在串口工具中看见以下内容,开发板LD2灯伴随着串口信息跳动一闪一闪,当用户按键时LD2的闪烁频率进行转换,串口工具中跳动得数值也随着变化。& M3 w: o1 h! p$ N) L( K, {+ l ( f8 @" s' m" {0 k2 h8 l" S/ `. ]7 ]
(LED2交替闪烁) |
谢谢lz! |
代码显示不全,请问下有附件可以下载嘛?6 E; @- M$ e$ ]; @! y1 z |
STM32固件库分享,超全系列整理
【经验分享】STM32G4_CORDIC与定点带符号整数数据格式
STM32的CAN FD位定时设置注意事项
基于STM32G474 中 Triggered-half 模式的实现
基于STM32G4的数字控制 15kW双向PFC
基于STM32G431简介
今天14:00 | 基于STM32的MATLAB电机控制方案直播
基于STM32G474外红外接收经验分享
STM32G431RBT6之Key模块入门
STM32G431RBT6--LED模块入门