要点:
1. STM32CubeMX 新版的功能应该足够强大了,可能已经不需要 SYSTEM 文件夹了?
在 CubeMX中,可以直接菜单设置、并生成相当于 sys目录下的文件?
HAL_Delay() 函数,CubeMX自动生成。
printf 函数,可能才需要用户自行稍作修改? arm 的 printf 函数默认支持“半主机模式”,需要专门的调试器来配合使用。
2. 由于正点原子 SYSTEM文件夹下的第三方库,具有通用性和普遍性;虽然使用 CubeMX可以生成这些函数,但是,还是具备很好的学习意义的。
3. 每一家公司的项目,各有其特点,因此,项目的文件夹结构,也各有不同。
正点原子的项目文件夹结构,适合于教学,但未必适合于实际的项目。
在使用 STM32的场景,最好的项目结构,可能是直接由 CubeMX生成的项目结构,直接自动生成,省心省力。但实际上,可能就是以此作为基础模板,然后,用户根据自己的项目特点,另行扩展,从而形成自己的项目目录结构。
4. printf()函数,与软件的逻辑调试有关,通常都是需要掌握的。
因此,与 printf有关的串口功能,也就必须掌握了。假如 MCU没有串口外设,则可能需要采用 IO口进行软件模拟。
x. 世界是不断变化的,STM32 也是。
使用 STM32CubeIDE,可以自动生成工程,这些工程可以包含 RTOS,图形界面库等等,
只不过 ST 自有的 IDE 还处在一个不断完善的过程中。如果只是使用 ST的 MCU,那么,使用 STM32CubeIDE无疑是方便的;
但是,实际上,每一家用户公司可能都会使用 2家以上的不同品牌 MCU吧?毕竟除了价格上的问题之外,没有哪一家 MCU 的供应链能够保证不会缺货?
----------------------------------------------------------------
关联:
串口通信:printf 重定向 (****) https://blog.csdn.net/ken2232/article/details/135347248
ARM半主机模式介绍,及 printf (**) https://blog.csdn.net/ken2232/article/details/135324666
=====================================
SYSTEM文件夹,是由正点原子提供的第三方库。
这个正点原子库的特点:
具有通用性。在不同的项目中,一般都需要用到。
https://www.bilibili.com/video/BV1bv4y1R7dp?p=41
delay 目录:主要是 us、ms级别的延时函数。
注意:?该延时函数采用死等的方式来实现延时,因此,可能只适合用在教学场景,或者 RTOS场景(时间片由 OS控制,因此,不会阻塞其他任务)。
usart 目录:主要是定义了 printf() 函数,重定向到串口输出。通过串口的上位机软件,可以获取用户自定义的各种调试输出信息。
sys 目录:
特别说明:
1. CLKSOURCE:在 ARM内核中定义为:时钟源选择;但是,被STM32重定义为:分频系数。