课程简介
学习单片机的其它几个注意点
1 .理论与实践并重 对一个初学单片机的人来说,如果按教科书式的学法,上来就是一大堆指令、名词,学了半天还搞不清这些指令起什么作用,也许用不了几天就会觉得枯燥乏味以致半途而废。所以学习与实践结合是一个好方法,边学习、边演练,循序渐进,这样用不了几次就能将所用到的指令理解、吃透、扎根于脑海,甚至 “ 根深蒂固 ” 也就是说,当你学习完几条指令后 ( 一次数量不求多,只求懂 ) ,接下去就该做实验了,通过实验,使你感受到刚才的指令产生的控制效果,眼睛看得见 ( 灯光 ) 、耳朵听得到 ( 声音 ) ,更能深刻理解指令是怎样转化成信号去实现控制的,通过实验看到自己所学的成果不仅有一种成就感也能提升你对单片机的兴趣。说句实在话,单片机与其说是学出来的,还不如说是做实验练出来的,何况做实验本身也是一种学习过程。因此边学边练的学习方法,效果特别好。
咨询详情
2 .合理安排时间持之以恒
学习单片机不能 “ 三天打鱼、两天晒网 ” ,要有持之以恒的毅力与决 4
心。学习完几条指令后,就应及时做实验,融汇贯通,而不要等几天或几个星期之后再做实验,这样效果不好甚至前学后忘。另外要有打 “ 持久战 ”
的心理准备,不要兴趣来时学上几天,无兴趣时凉上几星期。学习单片机很重要的一点就是持之以恒。
STM32单片机的内部总线
类型:指令总线
协议:基于AHB-Lite总线协议
位宽:32位
功能:连接Cortex™-M3内核的指令总线与闪存指令接口,负责在特定存储器地址范围内(0x0000_0000至0x1FFF_FFFF)的取指操作。CPU内核可一次取出两条16位Thumb指令。
类型:数据总线
协议:基于AHB-Lite总线协议
位宽:32位
功能:连接Cortex™-M3内核的数据总线与闪存存储器的数据接口,负责在相同存储器地址范围内的数据访问操作。支持数据常量和调试访问,且只支持AHB-Lite的对齐访问。
类型:外设总线
功能:连接Cortex™-M3内核的系统总线(外设总线)到总线矩阵,协调内核与DMA间的访问。负责在特定地址范围(0x2000_0000至0xDFFF_FFFF和0xE010_0000至0xFFFF_FFFF)内的所有数据传送,包括取指和数据访问。
4、DMA总线
功能:将DMA的AHB主控接口与总线矩阵相连,协调CPU的DCode和DMA到SRAM、闪存和外设的访问。DMA提供高速数据传输,减轻CPU负担。
功能:协调内核系统总线和DMA主控总线之间的访问仲裁,采用轮换算法。包含4个驱动部件(CPU的DCode、系统总线、DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口、SRAM、FSMC和AHB2APB桥)。
功能:在AHB和2个APB总线间提供同步连接,APB1操作速度限于36MHz,APB2操作于全速(**72MHz)。自动将8位或16位APB寄存器访问转换为32位访问,以适应32位向量。
单片机可靠性差?可以弄个软件陷阱!
①未使用ERROM空间的填充在程序存储器中未使用的EPROM空间,首先填入窄操作指令NOP(无操作指令)。在NOP指令后,填入一条跳转指令LJMP,跳转到预设的跑飞处理程序(如FLY)。
若未使用空间较大,可均匀分布NOP指令和LJMP指令,形成“软件陷阱”。
②数据表及子程序间的陷阱设置,在数据表的结尾处设置软件陷阱,确保程序跑飞到数据区时能及时转入正轨。若数据表较大,可在中间位置也设置软件陷阱。在每两个子程序之间设置一个软件陷阱,以捕获可能的程序跑飞。③中断服务程序中的陷阱,当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱。这样能够及时捕获错误的中断,避免程序进一步失控。
假设FLY为跑飞处理子程序的标签
FLY:跑飞处理代码(如复位、重新初始化等)
; ... ; 跳转到正常程序执行起点
LJMP START; 未使用EPROM空间填充示例
NOP
NOP
LJMP FLY; 数据表及子程序间陷阱设置示例
DATA_TABLE_END:
NOP
NOP
LJMP FLY
SUB_PROGRAM1_END: NOP
NOP
LJMP FLY
SUB_PROGRAM2_START:
子程序2的代码

