原创 【TI博客大赛】MSP430学习笔记

2012-11-15 23:11 1109 11 14 分类: MCU/ 嵌入式

这只是我在学习TI公司生产的16位超的功耗单片机MSP430的随笔,希望能对其他朋友有所借鉴,不对之处还请多指教。

下面,开始430之旅。

讲解430的书现在也有很多了,不过大多数都是详细说明底层硬件结构的,看了不免有些空洞和枯燥,我认为了解一个MCU的操作首先要对其基础特性有所了解,然后再仔细研究各模块的功能。

1.首先你要知道msp430的存储器结构。典型微处理器的结构有两种:冯。诺依曼结构——程序存储器和数据存储器统一编码;哈佛结构——程序存储器和数据存储器;msp430系列单片机属于前者,而常用的mcs51系列属于后者。

0-0xf特殊功能寄存器;0x10-0x1ff外围模块寄存器;0x200-?根据不同型号地址从低向高扩展;0x1000-0x107f seg_b0x1080_0x10ff seg_a 供flash信息存储

剩下的从0xffff开始向下扩展,根据不同容量,例如149为60KB,0xffff-0x1100

2.复位信号是MCU工作的起点,430的复位型号有两种:上电复位信号POR和上电清楚信号PUC。POR信号只在上电和RST/NMI复位管脚被设置为复位功能,且低电平时系统复位。而PUC信号是POR信号产生,以及其他如看门狗定时溢出、安全键值出现错误是产生。但是,无论那种信号触发的复位,都会使msp430在地址0xffff处读取复位中断向量,然后程序从中断向量所指的地址开始执行。复位后的状态不写了,详见参考书,嘿嘿。

3.系统时钟是一个程序运行的指挥官,时序和中断也是整个程序的核心和中轴线。430最多有三个振荡器,DCO内部振荡器;LFXT1外接低频振荡器,常见的32768HZ,不用外接负载电容;也可接高频450KHZ-8M,需接负载电容;XT2接高频450KHZ-8M,加外接电容。

430有三种时钟信号:MCLK系统主时钟,可分频1 2 4 8,供cpu使用,其他外围模块在有选择情况下也可使用;SMCLK系统子时钟,供外围模块使用,可选则不同振荡器产生的时钟信号;ACLK辅助时钟,只能由LFXT1产生,供外围模块。

4.中断是430处理器的一大特色,因为几乎每个外围模块都能产生,430可以在没有任务时进入低功耗状态,有事件时中断唤醒cpu,处理完毕再次进入低功耗状态。

整个中断的响应过程是这样的,当有中断请求时,如果cpu处于活动状态,先完成当前命令;如果处于低功耗,先退出,将下一条指令的pc值压入堆栈;如果有多个中断请求,先响应优先级高的;执行完后,等待中断请求标志位复位,要注意,单中断源的中断请求标志位自动复位,而多中断的标志位需要软件复位;然后系统总中断允许位SR.GIE复位,相应的中断向量值装入pc,程序从这个地址继续执行。

这里要注意,中断允许位SR.GIE和中断嵌套问题。如果当你执行中断程序过程中,希望可以响应更高级别的中断请求时,必须在进入第一个中断时把SR.GIE置位。

其实,其他的外围模块时钟沿着时钟和中断这个核心来执行的。具体的结构我也不罗索了,可以参考430系列手册。

上面把430单片机的基础特**待了一下,让大家整体有了结构的印象,后面我想在写一下c语言对430编程的整体结构。基本上属于框架结构,即整体的模块化编程,其实这也是硬件编程的基本法则拉(可不是我规定的法则哦)。

首先是程序的头文件,包括#i nclude ,这是14系列,因为常用149;其他型号可自己修改。还可以包括#i nclude "data.h" 等数据库头文件,或函数变量声明头文件,都是你自己定义的哦。

接着就是函数和变量的声明 void Init_Sys(void);系统初始化

系统初始化是个整体的概念,广义上讲包括所有外围模块的初始化,你可以把外围模块初始化的子函数写到Init_Sys()中,也可以分别写各个模块的初始化。但结构的简洁,最好写完系统的时钟初始化后,其他所用到的模块也在这里初始化。

文章评论3条评论)

登录后参与讨论

sunyzz 2016-1-20 21:29

我同意你的观点,而且我在蛮多书上都看到过这样的比喻,可事实上总线只能到模块级,譬如dma模块,模块内部是没有总线的,而只有时钟遍布在一块芯片的每一个角落,所以我把时钟比喻成血液或者血管,细胞比喻成dff。不过谢谢您的建议!!

用户1221358 2016-1-19 09:13

我觉得时钟是心脏,总线是血管,数据才是血液。

用户1136018 2012-12-2 15:52

对初学者很实用,收藏,谢谢!

用户380727 2012-11-18 15:24

不错,430低功耗,做仪表相对不错,我原来也用过430,不过有时感觉还是有点鸡肋

用户617349 2012-11-17 14:54

先下来看看~~~看介绍应该不错。。。毕竟基础的东西还是很多人不知道的
相关推荐阅读
用户435212 2013-03-07 15:43
[博客大赛]嵌入式系统之思
嵌入式系统的英文名称叫Embedded System,对于我们学习电子技术相关的人员来说,对于电子系列的英文名字必须记的,外加对于其的英文缩写也要记得,这样在我们以后读取datasheet的时候,...
用户435212 2012-12-18 22:47
【博客大赛】怎样成为优秀的电子工程师?
  “工程师是科学家;工程师是艺术家;工程师也是思想家。”一位伟大的工程师曾经提出过这样的一段感言。不错,工程师是利用自然科学来创造工程的人。工程既是物质的也是思想上的。许多不朽的工程,伟大的...
用户435212 2012-11-15 23:19
【TI博客大赛】Code Composer Studio v5.1 开发环境下使用MSP430
  Code Composer Studio™ v5.1 开发环境下使用MSP430 推荐大家使用CCSv5,如下所示           ...
用户435212 2012-11-15 23:14
【TI博客大赛】给大家转发个MSP430 JTAG(USB的和并口的)与目标板连接需要注意的几点总结
  经常看到有初学MSP430的朋友在坛里询问MSP430 JTAG与目标板连接方面的问题,我在这里给大家总结一下,希望能给初学MSP430的朋友拨云见日,不再疑惑。  MSP430的JTA...
用户435212 2012-11-15 23:08
【TI博客大赛】MSP430数模转换程序
  MSP430数模转换程序 单通道多次转换源程序,自己写的,给大家分享一下哈!   #include "msp430g2553.h" #define uchar u...
我要评论
3
11
关闭 站长推荐上一条 /2 下一条