



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、如何用寄存器的方法操作STM32这个文章是摘自阿莫论坛,觉得写得很不错,就收藏下来了,整理成文档,希望更多的人能看到既然我们要操作10口,当然就要看10口相关的知识。打开STM3210X参考手册.pdf,我的目的只是操作GPI0所以我只需要将第五章看完就0KT.章节比较多,懒得看,根据一般的经验(楼主,你缺经验了吧?,不说多就AVR和PIC而已。操作10般是两个步猱,第一,操作10控制寄存器,设置10为输出,第二就定送数据。那么很明显,只可能是GPI0 x_CRLGPIOx.CRH,GPIOx_ODR三个寄存器会有想要仔细阅读这几个寄存器的介绍后知道,GPIOx_CRL是控制PIN0-7的屈性
2、的,GPIOx_CRH控制PIN8-15,ODR寄存器当然就是输出数据了,将数据送到这里就行了。然后,这几个寄存器的地址定多少?首先看stm32flO3ve.pdf这个是官方的datasheet.,看第四章,MmeoryMapping为什么看这章?会英文都能猜到吧?,看PORTB的地址是0X40010C00-0 x40010阡F,这个就是基地址了。基地址加上偏移虽就能找到具体的寄存器。例如我需要操作GPIOB.CRL的偏移为00H,(看STM3210X参考手册.pdf)ODR寄存器的偏移为OCH那么很自然得出GPIOB.CRL=0 x40010C00GPIOB.ODR=0 x40010C0C怎
3、么验证我的结论正确?先看keil给的头文件KeilARMINCSTSTM32F10 xstm32fl0 x_map#definePERIPH.BASE(u32)0 x40000000)#defineAPB2PERIPH_BASE(PERIPH.BASE+0 x10000)#defineGPIOB.BASE(APB2PERIPH.BASE+OxOCOO)这样怎么算都能算出0X40010C00出来吧?ODR寄存器同理为了点亮LED,我需要将PB5(也就是GPI0B5)设置为输出,并口ODR相应的位写入1,看资料得出MODE5是bit2021控制的,CNF5是bit22,23M0DE5应该设置10(
4、0 x2)选择2MHZ输出,CNF5选择00(0 x0),通用推挽模式,于是将这个值写入(Volatileunsignedlong)0 x40010C00=(220)|(022);/为简单起见,不管其他位了楼主你是否能看懂这句C语言?volatile什么总思什么用?指针的木质是什么?为什么能这样用?220是什么总思,为什么能这样用?楼主我真的不是为难你,嵌入式都这么写的,ST的头文件也是这么定义同理,设呂ODR寄存器*(volatileunsignedlong*)0 x40010C0C=15;*(volatileunsignedlong*)0 x40010C0C=0;STM32没有SFR,没有
5、bit,没有sbit的概念的了。是不是就不如51了?下载运行,还不行,因为GPIOB的CLK没有使能,这时其实GPIOB是不能工作的,这是STM32特殊的地方,上电默认外设的时钟都绘关的,初学者没有注总这里,是可以原谅的,多看看书,多实践,多问问就绘了。找到问题的原因,则再RCC_APB2ENR设置,其中BIT3就是IOPBEN是时钟使能位,同上,先找到RCC_APB2ENR的地址#definePERIPH.BASE(u32)0 x40000000)#defineAHBPERIPH_BASE(PERIPH.BASE+0 x20000)#defineRCC_BASE(AHBPERIPH.BASE
6、+0 x1000)RCC_APB2ENR的偏移是18H,所以最终得到地址为0 x40021018.操作方法同上*(volatileunsignedlong*)0 x40021018|=13;最终的点LED的程序就完成了。voidmain(void)*(volatileunsignedlong*)0 x40021018|=13;*(volatileunsignedlong*)0 x40010C00=(220)|(022);*(volatileunsignedlong*)0 x40010C0C=15;while(1)如果将寄存器做一个定义,则程序变成如下#defineRCC_APB2ENR*(vo
7、latileunsignedlong*)0 x40021018#defineGPIOB_CRL*(volatileunsignedlong*)0 x40010C00#defineGPIOB_ODR*(volatileunsignedlong*)0 x40010C0Cvoidmain(void)RCC_APB2ENR|=13;GPIOB.CRL=(220)|(022);GPIOB.ODR=1CRL;不需要担心这样做的效率,因为都是地址,也就是指针,最终的效率绘直接寄存器操作,效率是非常高的。看不懂库函数,归根究底就是C语言功底不行。不要以为写过几行51就惯C语言了,远的很呢。还有,STM的库下载的时候包含了很多很多例子,库函数怎么使用在例子里而有很详细的介绍,不用写几行代码,都是复制例子做实验,也很很容易的。总结楼主的几个问题ARM没有SFR,也不需要,SFR绘51的关键字,没有理ill51有AR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 珠宝货品采购合同协议
- 特约代理商合同协议
- 物资搬迁协议合同书范本
- 瑜伽馆次卡合同协议
- 牵头方合同协议
- 现金混凝土合同协议
- 电子档车库转让合同协议
- 猪头肉采购合同协议
- 电缆迁移设计合同协议
- 瓷砖展架采购合同协议
- 亚低温的治疗与护理
- 危险化学品企业设备完整性 第2部分 技术实施指南 编制说明
- 防高坠自查自纠台账
- GB/T 4437.1-2023铝及铝合金热挤压管第1部分:无缝圆管
- 市政工程消耗量定额 zya1-31-2015
- 《高等数学下册》(资料全集)
- 奢侈品买卖协议书范本
- 抖音账号运营服务投标方案
- 《新大学英语·跨文化交际阅读》Values Behind Sayings
- 风电项目开发前期工作流程
- 劳动保障部《关于劳动合同制职工工龄计算问题的复函》
评论
0/150
提交评论