发新帖我要提问
12
返回列表
[应用相关]

2-STM32带你入坑系列(点亮一个灯--Keil)

[复制链接]
楼主: functions
手机看帖
扫描二维码
随时随地手机跟帖
functions|  楼主 | 2020-8-14 16:26 | 显示全部楼层
要告诉编译器0x40010800是一个地址才好,然后我要往这个地址里面写东西

(int *)0x40010800  这样就能告诉编译器0x40010800是一个地址

然后读取这个地址里面的值   aa =  *((int *)0x40010800)  

给这个地址赋值   *((int *)0x40010800)  = XXXXX

所以 就是 *((int *)0x40010800)  = 0x44444443;

981655f364a7ea98aa.png

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:27 | 显示全部楼层
这个只是配置了PA0的模式,咱还要让他输出高电平(配置了引脚,那个该引脚应该会有变化)  仿真下

392135f364abbe1dcc.png
442445f364ac369801.png
51305f364accd448a.png
551275f364ad3ed481.png
967845f364adfdf9e7.png
648735f364ae7b4d0d.png

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:28 | 显示全部楼层
799725f364aff40585.png

控制0端口输出高电平就是让ODR寄存器的值是    0x0000 0001

因为这个寄存器说有个偏移是0c   其实,额,还记得这张图不

532195f364b0f01e84.png

说白了就是前面的地址被其它寄存器占了而已,注意这里所说的偏移,都是在0x40010800的基础上需要增加多少才能到那个寄存器

所以要配置PA口 的ODR寄存器   就是需要在原来地址的基础上加上 0x0C

所以控制PA0输出高电平就是

*((int*)(0x40010800+0x0c))  = 0x0000 0001

873975f364b2a57273.png

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:29 | 显示全部楼层
咱先下载到开发板试一试
83265f364b3f9f334.png
会发现......不可以,,,哈哈哈哈

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:29 | 显示全部楼层
肯定还有没有配置的地方
963955f364b5f13598.png
需要打开时钟,有人就会想,这么麻烦呀......

嘿嘿,想一个场景,现在很多项目都需要低功耗,STM32呢之所以这些地方需要自己选择性的打开,就是为了低功耗

您想想哈,不打开,不用它,肯定省电

好了,咱就去打开时钟去

感觉到繁琐了没,注意这样寄存器开发哈,以后用库函数就方便的多,很多都封装好了,直接调用就可以

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:30 | 显示全部楼层
我个人感觉要想学好一个东西,其实最重要的是过程,我要让大家知道一切的一切都是怎么来的,为什么ST的官方要弄库函数,库函数是怎么写的.很少人会讲的这么深,总结起来有几个原因(嫌麻烦,懒的具体研究;怕讲不好,反倒让别人不喜欢自己的教程).

我呢从来不嫌麻烦,而且知识储备和自学能力还可以,所以呢....额,我也不知道该说什么,反正还是那句话:我说讲的东西不会让大家感觉到难,只是会感觉繁琐而已

现在市面上倒卖鱼的太多了,真正教给捕鱼的少之又少,我所希望的是前期自己捕鱼自己吃,后期从卖鱼的那里直接买鱼吃.等到哪一天卖鱼的不再了,你不是还可以自己捕鱼.当然你学会了捕鱼,当然也可以卖鱼,我现在就开始卖鱼了,也卖捕鱼的方法

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:31 | 显示全部楼层
扯了这么多.........

365215f364ba6cf32c.png

就是往这个寄存器里面的这个位写1就可以了

然后就是找地址

518715f364bb5a240f.png
831275f364bbc97d0f.png

所以RCC_APB2ENR这个寄存器的地址是

0x4002 1000  + 0x18



*((int*)(0x40021000+0x18))  = 0x00000004    

这个4    0100

379865f364bd05d3d7.png

136555f364bd93510c.png

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:32 | 显示全部楼层
下载进去试一试
812865f364bf4a123c.png
好了好了咱修改修改,去点亮小灯   PC13

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:32 | 显示全部楼层
首先是打开时钟   
622415f364c107fcfe.png
所以是  *((int*)(0x40021000+0x18)) = 0x00000010;

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:33 | 显示全部楼层
配置为输出50M
59425f364c35eb33a.png
500495f364c3b797d7.png
说一下哈 CRL是配置0-7引脚号   CRH是配置8-15引脚号   所以选择CRH
783265f364c4d633ec.png
*((int *)(0x40011000 + 0x04)) = 0x44344444;  默认的咱就默认是4

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:34 | 显示全部楼层
配置输出高电平
339505f364c6f34836.png
*((int *)(0x40011000 + 0x0C)) = 0x00002000;

124405f364c814e0f8.png

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:37 | 显示全部楼层
下载进去

558975f364d35956ab.png

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:37 | 显示全部楼层
现在熄灭

741035f364d4c55075.png
781495f364d53e4722.png

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:38 | 显示全部楼层
好了这一节就说到这里,自己去消化消化

使用特权

评论回复
functions|  楼主 | 2020-8-14 16:39 | 显示全部楼层

作者:杨奉武
链接:https://www.jianshu.com/p/6abb24a8dcb3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则