STM32Cube是由ST公司原创倡议,旨在减少开发负担。时间和费用,为开发者提供轻松的开发体验。STMCube覆盖了STM32全系列。其中STM32CubeMX是上位机配置软件,可以根据使用者的选择生成底层初始化代码。硬件抽象层(HAL),便是CubeMX配套的库,HAL库屏蔽了复杂的硬件寄存器操作,统一了外设的接口函数(包含USB/以太网等复杂外设),代码结构强壮,已通过CodeSonar认证。同时,HAL还集成了广泛的例程。
设置工程预留堆栈大小,简单来说,栈空间用于局部变量空间,堆空间用于alloc或者malloc函数动态申请变量空间,实际上一般程序栈空间为0x400是足够的。
在C语言中,使用位带功能时,要访问的变量必须用volatile来定义。因为C编译器并没有直接支持位带操作。
锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。锁存器最重要的作用就是缓存。R-S锁存器的结构是最基本的锁存结构。
晶体管->基本门电路->R-S锁存器->D触发器->寄存器
NVIC即嵌套向量中断控制器,STM32中有两个优先级的概念:抢占式优先级和响应优先级,响应优先级也称子优先级,每个中断源都需要被指定这两种优先级。具有高抢占优先级的中断可以在具有低抢占优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中。当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系。后到来的中断就要等到前一个中断处理完之后才能被处理。如果两个中断同时到达,由响应优先级高低来决定先处理哪个。如果抢占式优先级和响应优先级都相同,根据他们在中断表中的排位顺序决定先处理哪一个。STM32有5个优先级分组,数值越小代表优先级越高。