以stm32f107为例:
从链接脚本(bsp/stm32f107/stm32_rom.ld)中可以看到,程序的入口在Reset_Handler(),该函数位于bsp/stm32f107/Libraries/CMSIS/DeviceSupport/ST/STM32F10x/start_up/gcc-ride7/startup_stm32f10x_cl.s中,Reset_Handler()最后调用SystemInit()和C库中的main,C库中的main最终会调用main()函数。
SystemInit()函数位于bsp/stm32f107/Libraries/CMSIS/DeviceSupport/ST/STM32F10x/system_stm32f10x.c。
main()函数位于bsp/stm32f107/startup.c。
main()函数调用同文件中的rtthread_startup()。
rtthread_startup()进行一些初始化后调用rt_system_scheduler_start()(位于src/sheduler.c)启动调度器。
本文详细解析了基于STM32F107的嵌入式开发流程,从程序入口到main()函数的调用,以及系统初始化、调度器启动等关键步骤。
1万+

被折叠的 条评论
为什么被折叠?



