昨天看了一下w806的个大模块,比较期待w801的到来,具备wifi和蓝牙,补足了w806的网络欠缺,甚至某些领域能吊打hs6621了,比如共享设备、手环等应用
今天主要看下初始化部分的结构,方便未来移植freeos或者ucosiii
ic的入口是startup.s文件,这个指令集不太熟悉,就不一一看了,看个大概先,不对之处欢迎指正
开头是__Vectors: ,这部分是中断向量表
紧跟着是_start: 这部分是程序真正的入口了,里面设置了中断堆栈,向量表复制到向量中断,然后在L_loopv0_done里做了个地址映射,然后进入c 代码部分,根据宏调用了SystemInit,将irq_vectors的值读出来写入了vbr寄存器,看不大懂这个寄存器缩写,就当是mcu中断用的寄存器吧,紧跟判断宏根据不同mcu着重置了栈位置,设置了端口配置,然后启动了异常中断
然后进入了bsp的初始化 board_init,里面就初始化了下串口
再进入了main函数,main函数做了时钟的初始化,为什么不在board_init串口初始化之前做时钟初始化,头文件里面配置时钟用多少呢
main函数里面初始化时钟为160mhz,配置完系统时钟,wlan时钟,总线时钟后配置了HAL_InitTick 系统滴答时钟,并在HAL_InitTick里面开启了系统中断,SYS_TICK_IRQn,中断优先级TICK_INT_PRIORITY的定义是7,
配置计数中断W805_PLL_CLK_MHZ/(clk_div.b.CPU)* UNIT_MHZ / uwTickFreq
按宏定义为 480/3*1000000/1000 = 160 000相对于160mhz就是1/1000
所以是1ms中断一次
个人感觉移植ucos要费点功夫看看汇编指令集,和arm thumb差别很大,不晓得是不是C-SKY的指令集,有空了再看看
昨天看了一下w806的个大模块,比较期待w801的到来,具备wifi和蓝牙,补足了w806的网络欠缺,甚至某些领域能吊打hs6621了,比如共享设备、手环等应用
今天主要看下初始化部分的结构,方便未来移植freeos或者ucosiii
ic的入口是startup.s文件,这个指令集不太熟悉,就不一一看了,看个大概先,不对之处欢迎指正
开头是__Vectors: ,这部分是中断向量表
紧跟着是_start: 这部分是程序真正的入口了,里面设置了中断堆栈,向量表复制到向量中断,然后在L_loopv0_done里做了个地址映射,然后进入c 代码部分,根据宏调用了SystemInit,将irq_vectors的值读出来写入了vbr寄存器,看不大懂这个寄存器缩写,就当是mcu中断用的寄存器吧,紧跟判断宏根据不同mcu着重置了栈位置,设置了端口配置,然后启动了异常中断
然后进入了bsp的初始化 board_init,里面就初始化了下串口
再进入了main函数,main函数做了时钟的初始化,为什么不在board_init串口初始化之前做时钟初始化,头文件里面配置时钟用多少呢
main函数里面初始化时钟为160mhz,配置完系统时钟,wlan时钟,总线时钟后配置了HAL_InitTick 系统滴答时钟,并在HAL_InitTick里面开启了系统中断,SYS_TICK_IRQn,中断优先级TICK_INT_PRIORITY的定义是7,
配置计数中断W805_PLL_CLK_MHZ/(clk_div.b.CPU)* UNIT_MHZ / uwTickFreq
按宏定义为 480/3*1000000/1000 = 160 000相对于160mhz就是1/1000
所以是1ms中断一次
个人感觉移植ucos要费点功夫看看汇编指令集,和arm thumb差别很大,不晓得是不是C-SKY的指令集,有空了再看看
举报