ST从2014年推出了STM32CubeMX,同时配套的是HAL库。我是在2014年的ST研讨会上了解到这个工具,然后回来后立马下载,用了觉得蛮好用的,就一直用到了现在。 四年多的时间,STM32CubeMX和HAL库也在不断更新,到现在,已经支持STM32全系列,功能及生态支持上也很强大,各种中间件(FatFs、FreeRTOS、LWIP、USB、GUI等等)可无缝对接。 说说我目前的使用情况: 1、在硬件设计的时候,我就会使用到STM32CubeMX,使用它来分配MCU的各外设及其对应的管脚、晶振时钟等; 2、再通过Configuration配置各外设、中间件的具体功能。然后生成工程。 以上两步可以节约很多时间,工程的创建、端口功能复用配置、各中间件移植的步骤都省去了。 3、添加自己的代码。 STM32CubeMX生成的工程可以直接编译,但还仅仅是基础代码。这时就需要添加自己的功能性代码。生成的工程中一般有main.c\xxx_hal_msp.c\xxx_it.c 这几个是可以添加自己代码的。记得要把自己的代码添加在/* USER CODE BEGIN x */ 和/* USER CODE END x */之间,这样下次在STM32CubeMX修改了配置,再次生成代码,这之间的自己的代码不会被覆盖。 不过,我现在基本不修改生成的代码,我会新建一个文件夹,写自己的代码。比如,使用了FreeRTOS后,可以在CubeMX中创建任务时造成代码为As weak,这样生成的main.c文件中的任务函数为
因为使用了__weak,所以在我自己的代码中,只要重写一个void MainTask(void const * argument)就可以了。 4、如果在程序调试的过程中,CubeMX中的配置修改了,可以直接重新生成代码,不会影响之前的。 5、还是很希望STM32CubeMX能够在添更多的中间件,比如Modbus、CanOpen等常用的协议及开源代码。 大家可以聊聊自己在工作学习中使用STM32CubeMX及HAL库(LL库)的情况,技巧、心得,遇到的问题等等,一起交流进步。 |
不过总体上来说,HAL确实提升了开发的效率,省的不停滴查手册
点评
接入HAL的,只是修改main.c和stm32f1xx_it.c 这两个文件。所以重新生成工程(或者换芯片),也不用修改自己的代码。
而且这样的分布,如果只是修改BSP里面的.c文件,只会重新编译BSP文件夹里面的不好影响到其他层。
这样的好处,就是提升编译速度。
点评
点评
点评
点评
使用技巧,没啥特别的,就是基本不去碰它生成的代码。留文件对接函数接口
点评
其实我也想顺便推荐一下LL库,但是LL库目前没有在项目中使用,不敢误人子弟。
之前想用STM32F107VCT6的时候用TCP联网,看了教程也不会用,自己觉得可能用MCU做这些应用并不是太合适。
单纯的控制,GPIO,中断,CAN,I2C,定时器,PWM,串口,这些基本功能还是挺方便的
点评
点评
点评