菜鸟开帖,持续更新90天,顺序学习开发板大部分实验,以此帖作为一个坚持的动力

2019-07-20 06:12发布

开帖原因:毅力不足,三天打鱼两天晒网,经常制定目标,但执行力不够强,用此帖记录90天的历程,督促自己踏踏实实的学习
学习板  :探索者STM32F4
起始时间:2015年07月22日
更新时间:每晚23:45前完成更新

目    标:90天时间完成开发板的大部分实验,不求快但求稳

买开发版也有一段时间了,如果踏踏实实学习现在实验也应该测试过半了,但经常好高骛远,基础不扎实,导致来回往复,故此指定时间为90天,留有一定裕量,希望静下心来一步一步前进,踏实是最快的路径。
如果有哪位坛友也有此意,欢迎加入,互相交流,共同进步。Now,Fighting!

楼主总结:
更新过程中虽存在很多问题:
1.更新内容既非原创,内容深度又不足;
2.更新内容长短参差不齐,受心情、当天内容影响,更新内容所用时长差异较大,一般在两个小时左右,一部分时长低于一个半小时;
3.更新顺序、整体环节不够顺畅、调理等等。
但仍希望置酷,觉得有个酷帖是蛮酷的一件事~~~~~

附件为目录excel和txt格式。

Thank you for your encouragement!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
53条回答
龙之谷
2019-07-25 07:12
第〇四天:2015年07月25日  周六     例程:串口通信实验

感受:感觉今天写的东西有点傻,高手低手感觉无趣的尽快绕行,仅当写给自己备查的吧。

1.经常心里不踏实,每次需要配置某一功能时,都要拿起开发指南再对照参考手册一句一句更改,配置完成以后离开书本感觉空空的。今天分析一下原子哥串口配置,分解一下配置流程,先来个图


这是串口1的配置过程,细分的话有0~5一共六部分,之所以名为0部分是因为它仅仅是一个运算过程,单纯为第二部分使用作了相应运算。
第一部分:使能时钟、配置端口,这个不用说了,使用到端口都会进行的操作,基础操作。
第二部分:串口通信波特率很重要,通过参考手册波特率配置寄存器BRR的配置公式(第0部分进行了计算)进行配置即可,基础操作。
第三部分:配置控制寄存器,这个寄存器很重要,配置它提供了正常通信的基础,需要认真置位相关位,有些难度。
第四部分:配置优先级,一般涉及到中断都会配置优先级,使彼此按照重要程度排序,基础操作。
第五部分:使能,全部配置完成以后才能也必须使能,使其进入工作状态,基础操作。

这二十多行的代码本来感觉有一定难度,细分以后,除了需要对少寄存器研究注意一下认真配置赋值以外大部分都是基础性操作。

综上,配置某项功能的一般过程:使能时钟、配置端口-----查找相关寄存器,并按照需要配置。按照这简单暴力的思维模式进行外加开发指南等书籍辅助,寄存器配置没有想象中的那么难了。

2.XXX_IRQHandler与XXX_IRQn-----针对STM32F407等系列
前者XXX_IRQHandler:中断向量入口,中断函数名,定义于startup_stm32f40_41xxx.s
后者XXX_IRQn:中断号,中断时会产生中断请求信号,该信号告诉CPU是哪个中断请求,这个信号就叫做中断号,定义于stm32f4xx.h

3.对于开发指南里面定义的接收协议,如果初学看不懂建议多看几遍,不要轻易网络发问,网络上不大可能讲的比书上更详细到位,每看一遍都会慢慢理解,并逐渐感受到其精妙之处。同时,这个接收协议不是你以后开发必须的,甚至以后开发不会用到,但协议的思路是非常精妙的,值得深入研究。

------------------------------------隔一下--------------------------------------
现在时间:2015年07月25日 20:24:20,刚下班有点热,不想吃饭,现在有点饿,更到一半进退两难,买噶。先吃饭去,饿了没动力。
2015年07月25日 21:24:26,吃完饭了,这周是个小周末,按公司规定,每个月最后一周六天班,快下班的时候,老工程师说咱俩明天加班,...,老工程师人倒是挺好,不懂得地方耐心指导,只是自己底子薄,问不出高深的问题。
本来感觉有点累,想着怎么写省点事,但看到回复鼓励,静下心来按计划写吧,继续...
------------------------------------隔一下--------------------------------------

今日整理:(比较基础,自己经常混淆点,高手绕行)
1.RAM、ROM、FLASH、EEPROM
-----RAM(Ramdom Access Memory)随机存储记忆体,临时存储介质,可称为内存。可分为静态RAM(SRAM)和动态RAM(DRAM),SRAM速度非常快,是目前读写最快的存储设,DRAM则由于有较低单位容量价格,被大量采用作为主记忆。DRAM中比较知名的DDR RAM(Date-Rate RAM)也称作DDR SDRAM, 突出之处在于它可以在一个时钟读写两次数据, 这样就使得数据传输速度加倍了。
-----ROM(Read Only Memory)只读记忆体,用来存储和保存数据,掉电不丢失。缺点是不易更改。
-----FLASH MEMORY具有ROM掉电保存的优势,又可以在需要的时候任意更改,因此逐渐发展壮大。Flash主要有两种NOR Flash和NADN Flash。NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。

由于FLSAH通信速度慢,所以上电后(部分)程序会被搬运到RAM中从其首地址开始运行。对于裸机(可能是电脑等非普通单片机)程序,如果代码量很小,代码并不是必须搬到RAM中,而是CPU根据它和ROM的通信协议,来ROM中按照(R15)地址顺序来逐个提取code来运行,但是很慢。所以一般会将向量表之类的需要快速响应的东西,放到ram中,其实ram够大,也可以将所有的代码放到RAM中。

2.idata, data, xdata, pdata-----主要涉及到51内核单片机,有些知识仍是学习其他单片机值得品味的

-----内部RAM的低128位,对应的C语言就是data
-----内部RAM的高128位,对应的C语言就是idata
-----外部RAM可以扩展到65536个,但是前面256个是一页,比较特殊,用pdata修饰,也可用xdata修饰
-----除了256这第一页的其他65280空间,自能用xdata来修饰

回过头来讨论pdata和xdata,这两个都能修饰外部Ram的第一页,但是,Pdata只能修饰第一页,即最前面的256个外部Ram,那么,这最前面的256个到底用Pdata还是Xdata好的呢?答案是Pdata,因为Xdata修饰的变量,用的是DPTR寻址,Pdata用的是R0和R1.DPTR因为是16位的,所以可以覆盖整个的64K外部Ram,R0和R1是8位,所以只能寻址最前面的256个,也就是外部Ram的第一页,但是,用R0寻址,比DPTR快一倍,代码也小的很多。

参考链接:(注:最后一个链接为  掉电瞬间将数据存入E2PROM的方法,未作引用,如有需要可借鉴其思路)
【1】http://blog.csdn.net/shenquanxi/article/details/6699563
【2】http://www.freescaleic.org/module/forum/thread-443287-1-1.html
【3】http://blog.csdn.net/zhang810413/article/details/2651106
【4】http://jingyan.baidu.com/article/1612d5004310ebe20e1eeed0.html
【5】http://zhidao.baidu.com/link?url=zNpGqBO1xNZbIbjvn09iAEc5gs-YEB2NkIrvzgbwEnaFHvtzRXK-GUhkaCUtZ6Ts2M7d8ZUHfozYa3AKuf85eK
【6】http://wenku.baidu.com/link?url=9jTSp0fO2DQrTYZKE0XIo945lIKhNfSwz6jGrsdZwnuBdr4m1Ccvdjl6x2BTUhGvYLLkY48v-8cF_mFgBLA2T9VYJ52I_kB1qYXTKG-dMBC

一周热门 更多>