Odrive_0.5.5运行代码分析_(一)_从main开始

获取一个经过编译的代码

经过编译的代码树如下图,须经过编译,因为编译会生成autogen文件夹和其中的文件,后面会用到在这里插入图片描述

找到并打开main.cpp

不要打开Board中的main.c,它是cubeMX生成的且不被使用
在这里插入图片描述
可以看到,首先读取uid作为通讯的ID并经行数字转字符(line 645-657)
然后调用board.c中的system_init();跳转发现经行了hal库和系统时钟的配置
值得注意的是它还经行了otp的指针设置FLASH_OTP_BASE在stm32fxxx.h中定义
然后进入check_board_version函数检查硬件版本,其中的宏应该是全局宏定义(暂时找不到)可以在tup.config里改。
回到main()函数,接着经行了配置项的读取和加载
ps:odrv.misconfigured_为无效的配置,即后面要更新加载配置项,配置加载可详细在 了解(目前还没写)
紧接着进行board_init();
进入board_init,里面是对各种外设的初始化,值得注意的是
---- 1.它经行了条件判断,根据配置项初始化了不同的外设(基本是通讯相关)
---- 2.它的cubeMx生成的init函数中不进行GPIO的初始化而是在后面进行,也有一部分在board_init之后完成。它对GPIO进行了映射,具体见 此处
回到main()中,后面很大的代码是进行GPIO的初始化,之后进行信号量的创建,并创建rtos_main线程和启动rtos,如图在这里插入图片描述
同时在rtos_main线程中创建各个线程,而且在完成后就就将自己删除了。
本片完,To be countinue…

下一篇 Odrive_0.5.5运行代码分析_(二)_了解各个线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值