操作寄存器的一些感悟 (STM32和S5PV210)

前言

看了挺多的招聘信息的,如果是嵌入式相关的都要求很高。
而且很多招聘要求都要会用STM32

所以,现在开始正式接触一下吧。

有之前学习的基础,应该不难。

跑马灯实验

学习的思路
1.看代码
从main函数里面得到的信息
在这里插入图片描述
头文件没有截图过来。

第一步是进行各种初始化,
时钟初始化、延时函数初始化、LED初始化

第一步的时钟初始化,跟之前学ARM裸机的时候一样,开头的Start.S文件也是要进行初始化时钟,而且别人还要设置栈才能用C语言,这里目前还没有看到。

时钟初始化的函数进去研究的话要看STM32的参考手册,结合时钟树图可以分析,但是可能有点复杂,晚点自己再看。

分析两者的异同,从简单的LED_init来分析比较好。


这是LED初始化的函数。
STM32用了大量的宏定义,这样可能是为了让人更加好阅读代码吧。
其实RCC\GPIOB\GPIOE\APB2ENR这些都是可以进去再查看的

使能时钟

1.进入RCC的definition

#define RCC                 ((RCC_TypeDef *) RCC_BASE)

依旧是一串定义,再分别进去

在这里插入图片描述
再一步步进入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
慢慢地就追踪到了地址上面,从APB2外部总线一直追到外部总线,最后到地址,这不就是操作寄存器的节奏吗?

在这里插入图片描述

在这里插入图片描述

配置IO口

在这里插入图片描述
在这里插入图片描述
都是有根可寻一一对应的。

ARM裸机的代码

在这里插入图片描述
它这里时钟的初始化在start.S里面做了。
有些其他外设要使用其他时钟频率也是通过操作寄存器进行配置。

总结

对比两者来看,其实是非常相似的,都是操作寄存器。
仔细的看,这些寄存器都是基地址+变址进行操作的,而且是层层递进的。

如果把STM32的那段代码全部展开来,那结果就像ARM裸机一样的操作了,所以真的非常相似,有了之前的基础,是很容易继续学习下去的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值