你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
一、开发环境相关软件包 stm32g4系列芯片是st最新的推出的产品,与芯片、板卡配套的软件开发工具还有待逐步完善。目前我手边能获取到的软件开发环境的有stm32cubeide 1.1.0、keil 以及ac6。这几款开发工具都做了更新,各自的便利性对比如下,各位根据自己现有的系统环境进行相关程序的下载和搭建:1、 首先说stm32cubeide,最新的版本更新到1.1.0 . ~9 }9 q/ c" p- x7 r4 t 在 云顶集团3118acm登录入口官网的search中输入stm32cubeide,在“tools & software”,选择“stm32cubeide”,5 t ^ _. h: x, b; h) h j 2、 如果是keil工具,就需要到 keil云顶集团3118acm登录入口官网更新对应的工具开发包,下载地址链接: ,如果下载太慢可以用其它下载工具进行下载,另外其它包如果缺失可以在stmcu.org论坛中, 帖子里根据对应地址下载最新的keil包。2 c1 y6 u7 [! _ 目前最新的版本是:april 12, 2019 at 16:41:04 的v2.9。; b. y3 j. j# t, q7 s5 ] 2 d/ y( w u/ t# b d% b0 } 4、st-link固件更新:% o6 p8 p& o4 k6 x: |4 xstm32g431rb开发板在将st-link的主控芯片升级为stm32f723iek6后,相应的st-link固件也更新称为st-link-v3e,st官方提供的stsw-link007也做了相应升级,通过usb接口可直接升级板载固件。 该项目地址: 以上几款软件相比之下,集成度最高还是stm32cubeide,插件的使用也是最新的;keil的包管理虽然方便但其在线更新比较慢,要下载对应的包手工升级,确实比较麻烦;workbench for stm32(ac6)最后的版本更新在2019年4月,最新的g4xx开发包v 1.1.0的版本并不支持。1 z6 z8 q3 `# n* x; z2 i 这里先用stm32cubeide开发helloworld验证一下相关包和软硬件环境,步骤如下: 1、新建一个stm32 project工程, new>>>>选择stm32 project; 4 f x4 p1 s0 i7 ~8 e h2 a 2、在系统download mcu的列表清单后,进入cubemx的页面;) @6 s; \- j1 e9 q( {* ]4 n, x 3、在cubemx初始页面选择工程所需的mcu型号后,点击下一步:(关联菜单) (项目初始界面)9 v( k( h( t; g7 z q, c/ a 1)rcc,选择晶振 ! n4 n w' `- q0 c8 m 3)根据电路图得知,与st-link3芯片关联的vcp(虚拟串口)是lpuart1低功耗串口1;! p1 y/ |2 b- g6 d: j r' j, v* ^ 几个重要外设的原理图如上图,芯片的引脚功能选择入下图绿色部分:: k* r2 d# d1 ]/ o3 s b、串口参数设置:/ c2 k% m. }0 ^ ~5 \, r) ` c、rcc设置:4 c" { f9 ?" i/ e8 m4 q f、rtc时钟配置为lse:% e1 c c. k) `9 u g、主频配置最大的170mhz
//设置亮灯和关2 k7 l/ s- t1 u# u3 k #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 */…… /* 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__ */, k6 t* f& f" v2 y /** * @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 */ ▲ 左右移动,查看完整代码 z' y7 q0 w5 o: {$ z 编译后,连接开发板,在stm32cubeide中用debug方式将代码下载到nucleo-g431rb开发板中。2 t; g' a6 r# `/ b. f 打开一个串口调试工具,打开串口后,能在串口工具中看见以下内容,开发板ld2灯伴随着串口信息跳动一闪一闪,当用户按键时ld2的闪烁频率进行转换,串口工具中跳动得数值也随着变化。8 c. s' q0 i1 z5 e# r# a2 q. y6 r, o" p5 x 2 f$ l; q& p) q
(led2交替闪烁) ) n2 y' j* ]1 s1 j" l! j 开发环境和板子的搭配验证完成,实现可控、可编辑的,为后面的试验提供基础支撑。 |
原文