本帖最后由 damiaa 于 2023-9-5 17:00 编辑
【stm32wba】+8 stm32wba低功耗蓝牙软件app部分分析之一
【NUCLEO-WBA52CG】+1开箱贴
【STM32WBA52CG】+2 STM32WBA Web Bluetooth试玩
【STM32WBA52CG】+3 STM32WBA 外设应用一 按键和点灯
【STM32WBA52CG】+4 外设应用二 串口使用
【STM32WBA52CG】+5 THREADX使用
【STM32WBA52CG】+6 SEQUENCER调度器
【stm32wba】+7 stm32wba低功耗蓝牙软件基本架构之后继续
这里先分析下面几个文件
startup_stm32wba52cgux.s
下图比较形象的描述了startup_stm32wba52cgux.s的功能,主要是系统初始化和中断向量表,还有就是跳转到main函数。
sysmem.c
这里面就一个函数void *_sbrk(ptrdiff_t incr)
实现从“_end”链接器符号开始分配
“_Min_Stack_Size”链接器符 为MSPstack保留内存
实现将“_estack”链接器符号视为RAM端
注:如果MSP堆栈在执行过程中的任何时候都大于
保留大小,请增加“_Min_Stack_size”。
据说malloc 最终就会调用到它
Syscalls.c
一些系统调用的函数
Stm32wbaxx_it.c
所有中断函数放这里面,不过很多都在回调函数中处理,只是都是要经过这里。
Stm32wbaxx_hal_msp.c 一些外设,比如adc,uart等等的初始化放这里。
Main.c
是整个项目的入口,完成各种设备的初始化,保护蓝牙无线部分
App_entry.c main.c
执行所有的初始化后会把控制权交给MX_APPE_Process();
所以App_entry.c是很重要的一个文件,里面包括了:
void MX_APPE_Config(void);
//配置HSE时钟
uint32_t MX_APPE_Init(void *p_param);//系统初始化,电源初始化,SEG序列器初始化,登记seg任务,led,按键,串口,RNG,蓝牙等等初始化。基本上把初始化的事情都干了。
void MX_APPE_Process(void);//这里就调用了
UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);使UTIL_SEQ运行起来,因为MX_APPE_Config定义了要运行的三个任务任务。
void AMM_BackgroundProcess (void) //AMM背景任务处理 高级内存管理,这里知道就行了,继续深入很麻烦。哈哈。
void FM_BackgroundProcess (void)//FM背景任务处理Execute Flash Manager
background tasks 执行flash管理背景任务
void BPKA_BG_Process( void )//This function implements the offline key computation using the PKA 使用PKA实现离线密钥计算的处理任务函数
uint8_t APPE_ButtonIsLongPressed(uint16_t btnIdx);//长按键的处理
void APPE_Button1Action(void);//几个按键的处理
void APPE_Button2Action(void);//几个按键的处理
void APPE_Button3Action(void);//几个按键的处理
Seg序列器实现的各种函数 有一篇文章中有介绍,这里不说了。
另外的函数,包括了按键等的回调函数的定义等等等等。
谢谢