
一、开发环境相关软件包) |+ R! `! j. m; u9 _ STM32G4系列芯片是ST最新的推出的产品,与芯片、板卡配套的软件开发工具还有待逐步完善。目前我手边能获取到的软件开发环境的有STM32CubeIDE 1.1.0、KEIL 以及AC6。这几款开发工具都做了更新,各自的便利性对比如下,各位根据自己现有的系统环境进行相关程序的下载和搭建:" y+ Q7 C G+ ~# M1、 首先说STM32CubeIDE,最新的版本更新到1.1.0 ![]() ![]() ![]() % P; d3 g7 @8 T6 H8 Q 3、Workbench for STM32(AC6) 是在Eclipse的开发环境,在官网http://www.openstm32.org 下载System Workbench for STM32(需要注册),下载界面如下:![]() ![]() o) S" W( L8 N/ {# a" \, E 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 6 b4 I$ H0 g a8 ^9 W% i! y 二、软件的调试和Helloworld代码2 r; d ~! ]/ i以上几款软件相比之下,集成度最高还是STM32CubeIDE,插件的使用也是最新的;keil的包管理虽然方便但其在线更新比较慢,要下载对应的包手工升级,确实比较麻烦;Workbench for STM32(AC6)最后的版本更新在2019年4月,最新的G4xx开发包V 1.1.0的版本并不支持。 ], O, D! q, o+ ? 这里先用STM32CubeIDE开发HelloWorld验证一下相关包和软硬件环境,步骤如下:2 o) h" l/ H [4 j' s 1、新建一个STM32 Project工程, New>>>>选择STM32 Project; ![]() v* H/ s. E9 W7 l7 K8 @0 X 2、在系统Download MCU的列表清单后,进入CubeMX的页面;- G# b& N1 f+ r! i9 e$ t& A# G![]() ) j l" M9 @* p, _9 G3 o1 Y 3、在CubeMX初始页面选择工程所需的MCU型号后,点击下一步:![]() ![]() ![]() $ ]9 q7 q ~& |2 O1 @3 x1 {2 T% u 5、在系统自动创建成功后,在打开关联透视图提示菜单中,点击“Yes”,带有Helloworld.ioc文件的STM32工程就建好了:) F3 A+ V6 S3 H% O![]() (关联菜单) ![]() (项目初始界面)! M. o' W0 I8 L: \ q ![]() 5 v" e$ o- O! {9 T0 a7 g 7、选择所需功能组件的顺序如下:6 I% G! \! d# y( A4 O1)RCC,选择晶振 ![]() . M$ i& X5 E0 z0 E, K: O, V 2)因板子带时钟晶振,激活RTC时钟功能![]() ![]() 0 `- l8 G* A7 s& L u8 \+ _9 m( L 4)选择MCU对应的引脚PIN功能,如下图:引脚功能设置要参考Nucleo-G431RB的原理图:![]() ![]() 5 P/ }; ?3 j6 N5 V$ \& j( [ ![]() / t% j, l( z, \: A$ N6 R( r 几个重要外设的原理图如上图,芯片的引脚功能选择入下图绿色部分:![]() $ J- g1 a% P9 b. _/ r3 P: n- A1 \ 5)相关的功能设置,如下:a、GPIO设置参数:![]() 4 Y( b1 ?, o5 e9 b) r$ [; n b、串口参数设置:![]() , V9 H' _' r, a$ b. @ c、RCC设置:![]() ![]() ![]() ! m# L, e$ n& ]0 d4 h9 @# i( B. v f、RTC时钟配置为LSE:![]() g、主频配置最大的170MHz ![]() # z: z2 t% ~- y; y3 g0 s7 r! ] h、项目输出的内容一览,保存或关闭窗体,会自动生成相应代码![]() ![]() ! ?4 n' B2 @! J6 b main.h 添加的代码内容如下:
//设置亮灯和关 #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 */…… ▲ 左右移动,查看完整代码 int main(void){ /* USER CODE BEGIN 1 */ uint8_t sta = ON; /* USER CODE END 1 */……% t3 T* V% ]" ]3 F! a+ {4 K7 J /* 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__ */+ `8 c0 H1 P+ Q% R9 U6 S' u /** * @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 */ ▲ 左右移动,查看完整代码 7 P T/ p+ ?# R3 h 编译后,连接开发板,在STM32CubeIDE中用Debug方式将代码下载到Nucleo-G431RB开发板中。: |. J/ w# q% r7 D" W![]() 9 v' F( e# G" ^- r 打开一个串口调试工具,打开串口后,能在串口工具中看见以下内容,开发板LD2灯伴随着串口信息跳动一闪一闪,当用户按键时LD2的闪烁频率进行转换,串口工具中跳动得数值也随着变化。8 h/ G% G9 y6 \3 x2 { D5 ^; i) C ![]() 0 N- ~9 c" f& u [6 }) n. v0 W+ e
![]() ![]() (LED2交替闪烁) $ F/ y+ Z9 I0 Z 开发环境和板子的搭配验证完成,实现可控、可编辑的,为后面的试验提供基础支撑。 |
STM32G4板卡分享-软件工具及环境搭建 - 知乎 (zhihu.com)
原文