msp430g2553单片机学习心得

发布者:Yuexiang最新更新时间:2020-03-09 来源: eefocus关键字:msp430g2553  单片机  学习心得 手机看文章 扫描二维码
随时随地手机看文章

四年前学习的TI的Msp430g2553这款单片机,最近在整理学习记录的时候把当时的学习心得重新写下来。学习单片机最早是学习的51系列的,看的也是广为推崇的郭天祥郭老师的《十天学习单片机》,个人觉得单片机学习还是最先攻克51的。学习好51之后,对单片机操作有了基本的认识,再学习其他款单片机自然是能融会贯通。


TI的430系列主打是低功耗,它的技术文档和Dome程序都非常详细,尤其是技术文档真让人有种膜拜的感觉,在每个模块的时候还有个框图,对理解模块内设置非常有帮助,我当时还特意打印了。当时它的User's Guide还没有中文版,如果实在看不懂,可以借鉴F149系列的(这款有人翻译了中文版本)。


个人觉得在学习g2553这款单片机中,主要注意的点:


(1)注意低功耗的使用,选用不同的模式。


(2)IO的设置,由于IO口比较少,复用的比较严重,当时 一直纠结IO口的REN与OUT,DIR的问题,下面这个表概括详细,总结I/O 口配置时PxDIRx、PxRENx和PxOUTx寄存器的用法 

                                                                  

  PxDIRx          PxRENx       PxOUTx       I/O 口配置  

                 0                0                 x                输入   

                 0                1                 0                置低 

                 0                1                 1                置高 

                 1                x                 x                输出



其他具体的由于当时的笔记找不到,就不能一一说明了。


下面是比较实用的G2553框架程序:


#include 

 

//函数声明 

void InitSys(); 

 

 

int main( void ) 

     

     WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 

     

     InitSys(); //初始化 

     

     start: 

     //以下填充用户代码 

     

     

     LPM3; //进入低功耗模式n,n:0~4。若不希望进入低功耗模式,屏蔽本句 

     goto start; 

     

 

/***************************************************************************** 

系统初始化 

******************************************************************************/ 

void InitSys() 

     unsigned int iq0; 

     

     //使用XT2振荡器 

     BCSCTL1&=~XT2OFF; //打开XT2振荡器 

     do 

     { 

           IFG1 &= ~OFIFG; // 清除振荡器失效标志 

           for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振 

     } 

     while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振 

     

     BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2 

     

     //以下填充用户代码,对各种模块、中断、外围设备等进行初始化 

     

     _EINT(); //打开全局中断控制,若不需要打开,可以屏蔽本句 

 

/***************************************************************************** 

端口2中断函数 

******************************************************************************/ 

#pragma vector=PORT2_VECTOR 

__interrupt void Port2() 

     //以下为参考处理程序,不使用的端口应当删除其对于中断源的判断。 

     if((P2IFG&BIT0) == BIT0) 

     { 

           //处理P2IN.0中断 

           P2IFG &= ~BIT0; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P2IFG&BIT1) ==BIT1) 

     { 

           //处理P2IN.1中断 

           P2IFG &= ~BIT1; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P2IFG&BIT2) ==BIT2) 

     { 

           //处理P2IN.2中断 

           P2IFG &= ~BIT2; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P2IFG&BIT3) ==BIT3) 

     { 

           //处理P2IN.3中断 

           P2IFG &= ~BIT3; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P2IFG&BIT4) ==BIT4) 

     { 

           //处理P2IN.4中断 

           P2IFG &= ~BIT4; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P2IFG&BIT5) ==BIT5) 

     { 

           //处理P2IN.5中断 

           P2IFG &= ~BIT5; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P2IFG&BIT6) ==BIT6) 

     { 

           //处理P2IN.6中断 

           P2IFG &= ~BIT6; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else 

     { 

           //处理P2IN.7中断 

           P2IFG &= ~BIT7; //清除中断标志 

           //以下填充用户代码 

           

     } 

     

     LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽 

 

/***************************************************************************** 

USART1发送中断函数 

******************************************************************************/ 

#pragma vector=USART1TX_VECTOR 

__interrupt void Usart1Tx() 

     //以下填充用户代码 

     

     

     LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽 

 

/***************************************************************************** 

USART1接收中断函数 

******************************************************************************/ 

#pragma vector=USART1RX_VECTOR 

__interrupt void Ustra1Rx() 

     //以下填充用户代码 

     

     

     LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽 

 

/***************************************************************************** 

端口1中断函数 

多中断中断源:P1IFG.0~P1IFG7 

进入中断后应首先判断中断源,退出中断前应清除中断标志,否则将再次引发中断 

******************************************************************************/ 

#pragma vector=PORT1_VECTOR 

__interrupt void Port1() 

     //以下为参考处理程序,不使用的端口应当删除其对于中断源的判断。 

     if((P1IFG&BIT0) == BIT0) 

     { 

           //处理P1IN.0中断 

           P1IFG &= ~BIT0; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P1IFG&BIT1) ==BIT1) 

     { 

           //处理P1IN.1中断 

           P1IFG &= ~BIT1; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P1IFG&BIT2) ==BIT2) 

     { 

           //处理P1IN.2中断 

           P1IFG &= ~BIT2; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P1IFG&BIT3) ==BIT3) 

     { 

           //处理P1IN.3中断 

           P1IFG &= ~BIT3; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P1IFG&BIT4) ==BIT4) 

     { 

           //处理P1IN.4中断 

           P1IFG &= ~BIT4; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P1IFG&BIT5) ==BIT5) 

     { 

           //处理P1IN.5中断 

           P1IFG &= ~BIT5; //清除中断标志 

           //以下填充用户代码 

           

     } 

     else if((P1IFG&BIT6) ==BIT6) 

     { 

           //处理P1IN.6中断 

           P1IFG &= ~BIT6; //清除中断标志 

           //以下填充用户代码 

           

[1] [2] [3]
关键字:msp430g2553  单片机  学习心得 引用地址:msp430g2553单片机学习心得

上一篇:学习MSP430G2553总结
下一篇:MSP430在CCS开发环境下的内存分配

推荐阅读最新更新时间:2024-11-10 07:01

51单片机编程开发(一)之C语言基础一
C51编译器 51单片机开发编译有很多,现在比较有名的是IAR for 8051编译器和KEIL for C51编译器,但这两个软件都不是免费的,官网提高的免费版是有使用限制的。另外还有一些编译器是免费的,但需要一定基础,初学者就不推荐使用了,等你翅膀硬了之后在自己配置编译环境吧。 简单介绍两个免费编译器:可跨平台使用的开源编译器sdcc,有空可以自己查资料搭建一下,后期如果有时间我再做个教程吧。另外微软公司提供的Visual Studio Code这个免费又强大的代码编辑器配合一些三方插件工具也可以实现各种单片机编译功能,效果也不错,这个也以后再另说吧。IAR for 8051编译器和KEIL for C51编译器在官网都可
[单片机]
51<font color='red'>单片机</font>编程开发(一)之C语言基础一
英飞凌推出业界首款支持更大功率的USB PD 3.1高压微控制器
【2021年8月3日,德国慕尼黑讯】英飞凌科技股份公司,推出业界首款支持USB Power Delivery(USB PD)3.1的高压微控制器(MCU)。该芯片简称为EZ-PD™ PMG1(Power Delivery Microcontroller Gen1),是英飞凌第一代USB 支持PD的MCU,针对需要高达28 V(140 W)的高压供电或受电的嵌入式系统。该器件支持USB PD 3.1规范中定义的更大功率,并利用MCU提供额外的控制功能。新产品非常适合消费市场、工业市场和通信市场的诸多应用,如智能扬声器、路由器、电动工具和园艺工具等。 PMG1系列集成了经市场验证的USB PD协议栈,能实现可靠的性能和高互操作性。
[电源管理]
英飞凌推出业界首款支持更大功率的USB PD 3.1高压<font color='red'>微控制器</font>
单片机pt2262无线遥控解码器制作源程序
#include reg52.h #include intrins.h #define uchar unsigned char uchar code dis1 = { 2262 CODE IS }; void delay_1s(uchar); typedef unsigned char BYTE; typedef unsigned int WORD; typedef bit BOOL ; sbit rs = P2^6 ; sbit rw = P3^6 ; sbit ep = P2^7 ; delay(BYTE ms) { // 延时子程序 BYTE i; while(ms--) { for(i = 0; i
[单片机]
AVR单片机熔丝位配置参数
mega8的熔丝位设置 以下内容根据mega8的英文手册翻译,希望对大家有所帮助。如发现错误,恳请大家指正。 mega8熔丝位: 1:未编程(不选中) 0:编程(选中) ******************************** 熔丝位 说明 缺省设置 ******************************** RSTDISBL: 复位或I/O功能选择 1 1:复位功能;0:I/O功能(PC6) WDTON: 看门狗开关 1 1:看门狗打开(通过WDTCR允许);0:看门狗禁止 SPIEN: SPI下载允许 0 1:SPI下载禁止;0:SPI下载允许(注:当使用SPI编程时,该项不可用) EEAVE: 烧录时EEPRO
[单片机]
采用Atmega128单片机的嵌入式控制器设计
采用Atmega128单片机设计的嵌入式控制器,模拟量输入通道用Atmega128片内A/D转换器,输出用AD421 D/A转换器,数字量I/O通道配置高速先耦器件.用LCCavr编译器修改OSTaskStklnit()函数及其相关文件,定义数据类型等以实现MICroC/OS-Ⅱ的移植. 1 引言 嵌入式控制器是机电设备实现自动化的核心部件。故以大型机电设备为控制对象,利用高性能Atmega 128微处理器, 设计了具有现场总线(CANBUS)网络通信和一定通用性的多功能嵌入式智能控制器。 2 硬件设计 系统的硬件结构如图1。 本控制器的核心采用64管脚TQFP封装的Atmega128芯片,具有53
[单片机]
采用Atmega128<font color='red'>单片机</font>的嵌入式控制器设计
51单片机制作电子琴
#include reg52.h unsigned char tone; unsigned char op; sbit led=P1^1; sbit spk=P1^0; sbit key1=P3^2; //两只老虎演奏按键 sbit key2=P3^3; //1~i演奏按键 unsigned char code shuma ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //用于使定时器初值变化以产生相应频率的定时 unsigned char code yinfu_H = {0xfb
[单片机]
单片机知识(三)
通过前面的学习,我们已经了解了单片机内部的结构,并且也已经知道,要控制单片机,让它为我们干学,要用指令,我们已学了几条指令,但很零散,从现在开始,我们将要系统地学习8051的指令部份。 一、概述 1、指令的格式 我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很 笨 ,只能懂得数字,如前面我们写进机器的75H,90H,00H等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如MOV P1,#0FFH,这样就好记了。 这两种格式之间的关系呢,我们不难理解,本质上它们完全等价,只是形式不一样而已。 2、汇编 我们写指令使用汇编格式,
[单片机]
【GD32 MCU 移植教程】2、从 GD32F303 移植到 GD32F503
1. 前言 GD32E503 系列是 GD 推出的 Cortex_M33 系列产品,该系列资源上与 GD32F303 兼容度非常高,本应用笔记旨在帮助您快速将应用程序从 GD32F303 系列微控制器移植到 GD32E503 系列微控制器。 2. 引脚兼容性 GD32F303 与 GD32E503 在相同封装下是 Pin To Pin 兼容的。但由于 GD32E503 较 GD32F303多了 SHRTIMER、SQPI 功能,所以两者引脚定义有细微差别,如下表所示: 表 1 GD32F303 系列和 GD32E503 系列引脚区别 3. 内部资源兼容性 下表给出了 GD32F303 与 GD32F503 的资源对比总览(
[单片机]
【GD32 <font color='red'>MCU</font> 移植教程】2、从 GD32F303 移植到 GD32F503
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved