欢迎来到天天文库
浏览记录
ID:28100663
大小:106.00 KB
页数:8页
时间:2018-12-08
《有51基础很容易入门ARM是真的吗.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、有51基础很容易入门ARM是真的吗 从51到ARM,这路怎么走? 51都是有地址映射的(即SFR,特殊功能寄存器),在头文件reg52.h里面,不知道ARM有没有,且不知道如何调用。以STM32为例,官方有提供个固件库,也就是好几个文件夹和几十个文件,里面有会汇编写的,也有用C写的,貌似也有地址映射,貌似里面的地址映射语句不是像51里面用sfr来表示的,貌似是用#define来定义的,这边搞糊涂了。 固件库中还包含了很多打包好的程序,比如说各种传输协议要用到的程序。但我的思维还停留在51,并且我不知
2、道停留在51的这种思维是否是正确的:那就是,完全自己编码,除了sfr定义,包括很多包装好的函数,自己写出来才算学会。这种思维,不知道在ARM学习上是否同等适用,难道学ARM时上了个层次,就直接在别人打包好程序的基础上做产品了吗? 必须强调,在上位机,PC软件方面,是得调用操作系统的很多函数、库,这个没办法,因为强大的PC界面及功能,如果底层驱动什么的都自己写的话会累死,而且不一定有成效。但ARM不同,不同在他比PC低一层次,但同时又高51一个层次,所以我纠结了。 并且我现在不知何从入手,就算是将固
3、件库搞明白也得花不少时间。但我觉得,如果让ARM点亮一个小LED,应该用不上那么多固件库或函数,只要能点亮个LED就行,这么低的要求,应该是用到很少的语句及配置程序,但网上所有的教程基本上首先就教你:如何调用所有的官方库,这无疑让初学者陷入泥潭。 良心答主:我看楼主浮躁得不得了。现在什么都不要做了,先去看几遍《不要做浮躁的嵌入式工程师》这篇文章,想清楚了,再动手吧。 我做了个实例,不用ST的库来点LED,解答你的问题我的KeilMDK3.5我的STM32板子奋斗版是,IC是STM32F103VET6调
4、试工具JLINKV8LED接在PB5,高电平点亮既然说一定懂C语言了,那么对于下面我的问题,不查百度,完全靠自己,懂多少?然后查了百度之后又能懂多少? (一)新建keil工程,IC选择ST公司的STM32F103VE,keil提示是否copy启动文件,选择是。这里有问题,你有没有读过这个启动头文件?51也是同样的启动文件,51的那个启动文件有没有读过?你知道头文件里面做了什么吗?C语言真的从main函数开始吗?运行时库是什么?这些资料从什么地方知道?keil编译器的行为?(如果你说头文件是汇编的,没有必
5、要看,那我当我没说)例如启动文件里面有这么一句,我的问题是__main这个标号在哪里实现的,注意,这里肯定不是main函数这里跳到哪里去了?还有个问题[WEAK]这里是什么意思?有什么用? Reset_HandlerPROC EXPORTReset_Handler [WEAK] IMPORT__main LDRR0,=__main BX R0 (二)新建一个main.c并且写一个main函数,什么都不做,这和51一样了。 voidmain(void){ while(1) { }}然
6、后因为我需要调试,则设置jlink调试器,在项目属性里面Debug标签,UseJ-LINK/J-TRACE,然后到utilities标签,同样选择J-LINK/J-TRACK,并且选择Setting按钮,里面的ProgrammingAlgorithm还是空的,表示keil不知道目标是什么,我添加一个STM32F10XHigh-densityFlash,问题,为什么是High-desity?依据是什么?全部确认返回。这个时候已经可以编译,开发板上电,已经可以下载仿真的,虽然程序什么都没有写 (三)既然硬件
7、,仿真器,调试都准备好了,接着就开始写程序了。 我一直推荐新手花钱买学习板和仿真器,因为可以排除硬件的问题,让初学者集中精力去写程序,而不用怀疑硬件有问题,这点很重要。这阶段主要是看书,了解这个IC的架构,了解指令集,了解寄存器(别跟我说你找不到这些资料?)Cortex-M3权威指南CnR2(电子书).pdfSTM3210x参考手册.pdf学习板原理图博客,论坛等多个帖子,务必要对整个IC有个初步的了解。这个过程有点痛苦,但是值得花这个时间。 (四)开始写LED 既然我们要操作IO口,当然就要看IO
8、口相关的知识。打开STM3210x参考手册.pdf,我的目的只是操作GPIO所以我只需要将第五章看完就OK了。章节比较多,懒得看,根据一般的经验(你缺经验了吧?),不说多就AVR和PIC而已。操作IO一般是两个步骤,第一,操作IO控制寄存器,设置IO为输出,第二就是送数据。那么很明显,只可能是GPIOx_CRLGPIOx_CRH,GPIOx_ODR三个寄存器会有想要仔细阅读这几个寄存器的介绍后知道,GPIOx_CRL是控制PI
此文档下载收益归作者所有