軟件環境:Win7+MDK4.7.2
硬件環境:STM32F4Discovery
所用OS代碼:RT-Thread2.0.0 beta 下載地址: https://github.com/RT-Thread/rt-thread/archive/v2.0.0_beta.zip
解壓縮后,使用\rt-thread-2.0.0_beta\bsp\stm32f40x\project.uvproj 進行實驗。
沒有使用scons和python。不大需要這個東西。
今天只熟悉一下軟件環境:
1、RT進入main之前,
與普通的MDK-STM32程序一樣。會使用system_stm32f4xx.c文件中的SystemInit函數初始化時鍾。
2、main函數位於startup.c文件中。進行兩個工作
系統開始前,rt_hw_interrupt_disable關閉所有中斷。
之后使用rtthread_startup啟動RTThread
3、函數rtthread_startup()完成的工作:
1、調用函數rt_hw_board_init 完成板子初始化工作
2、顯示版本信息:rt_show_version
3、初始化系統滴答:rt_system_tick_init
4、系統內核對象初始化:rt_system_object_init
5、定時器初始化:rt_system_timer_init
6、系統堆棧初始化rt_system_heap_init
7、任務調度器初始化:rt_system_scheduler_init
8、rt_application_init //加入用戶自定義的任務
9、FINSH模塊初始化 ,
10、定時器線程初始化:rt_system_timer_thread_init
11、空閑任務初始化rt_thread_idle_init
12、開始任務調度,OS接管MCU:rt_system_scheduler_start
任務調度開始之后,OS就算是啟動好了。之后的東西都是在OS的管理下運行了。
4、在RTT示例工程中添加外設驅動的方法:
驅動頭文件加入board.h