STM32开发内核结构

                
                                                       
                                           

转载请保留原作者

想讲解一下STM32的开发内核架构,说白了就是讲讲我的代码是怎么一层一层的调用一直到最底层的寄存器的.

首先上图:




图中已经很清晰了,我只想强调几个点:
1. stm32f10x.h这个文件真是相当的吊啊,基本上所有的哭文件里都有包含这个文件,因为这个文件时间上就相当于STM32的硬件抽象,他隔绝了底层的寄存器,向上提供了各种结构体,同时这个文件定义了很多的常量,都是在使用的时候赋值给某个寄存器的
2. 再往上来一个层级,system_stm32f10x.c和.h他们的作用是初始化系统(时钟),这个是启动的汇编文件里调用的,用于初始化系统
3. 而对于core_cm3.c和.h文件,他们是干什么的呢,看名字就知道这是个和内核比较接近的文件,所以它的功能就是初始化内核,我们都知道内核才是ARM公司的,其他的外设都是芯片厂商的,但是到底初始化了内核的什么,暂时还不清楚, 下次再补充
4. 再往上就是标准的外设驱动,misc是关于NVIC中断分组的,这个驱动被单独列出来因为原来的版本里面没有这个文件。
5. 再就是stm32f10x_it.c这个文件是系统中断函数
6. last BUT not least      stm32f10x_conf .h这个文件里面的细节要注意,这个文件里面有一个宏,他可以开启所有的库函数里面的一个隐藏技能,就是再编译阶段检查函数的参数是否符合要求,相当吊的一个功能,他怎么实现的呢:利用断言和这个  assert_param(isXXX_ALL_PERIPH(  ))宏

好了总结一下,函数怎么操作底层寄存器的呢?首先明确一点,外设啥的都是要映射到存储器中的,所以用那个硬件抽象层的文件把寄存器用结构体来封装一下,然后将这个结构体的地址设置为存储器中该外设所映射的那个地址,这样操作结构体的时候就是操作寄存器,然后在将这些结构体的操作封装为库函数(即驱动函数)


就这么多了,一下午没有上自习了,都有负罪感了。下次更新  To be continue..........



                                   
                               
   
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值