MSP430F5529的IO口管脚的中断学习笔记
MSP430F5529实验指导书V1.0

MSP430F5529 实验指导书(V1.0)2014年10月27日东北林业大学机电工程学院“3+1”实验室实验一基础GPIO实验实验二键盘与液晶显示实验实验三时钟系统配置实验实验四看门狗与定时器实验实验五 AD/DA实验实验六比较器实验实验七 Flash实验实验八串行通信实验实验一基础GPIO实验【实验目的】1、熟悉CCS的基本使用方法;2、掌握MSP430系列单片机程序开发的基本步骤;3、掌握MSP430 IO口的基本功能。
【实验仪器】1、SEED-EXP430F5529v1.0开发板一套;2、PC机操作系统Windows XP或Windows 7,CCSv5.1集成开发环境。
【实验原理】CCS(Code Composer Studio)是 TI 公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境,能够帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。
CCSv5.1 为 CCS 软件的最新版本,功能更强大、性能更稳定、可用性更高,是 MSP430 软件开发的理想工具。
SEED-EXP430F5529v1.0开发板上的有8个可操作的LED灯,与MCU的IO口对应关系如图1-1所示:图1-1 LED与MCU的IO对应关系电路我们可以通过控制单片机IO口的输出电平状态来控制各个LED灯的亮灭。
开发板上还有2个可操作的按键S1,S2。
如图1-2所示。
图1-2 按键电路我们可以通过读取与按键相连的IO口的输入电平状态来执行相应的操作。
此外,S1,S2还可以作为外部中断源,触发中断。
【实验内容】1、用调用头文件的方法,使能MSP430F5529开发板上的8个LED灯依次按顺序循环点亮;2、用按键S1控制开发板上LED1的亮灭状态(查询法);3、用按键S2控制开发板上跑马灯的循环速度(中断方式)。
【实验步骤】内容1:使能开发板上的8个LED灯依次按顺序循环点亮1、打开CCSv5并确定工作区间,然后选择File-->New-->CCS Project 弹出图1-3对话框。
Mspf时钟系统与定时器以及中断

时钟信号
ACLK 辅助时钟,其时钟源可由软件控制XT1、REFOC、VLO、DCO、 DCOCLKDIV、XT2里面选取。其中DCOCLKDIV是由DCO经1、2、4、 8、16或者32分频得到。注意,ACLK同样可以再次被1、2、4、8、 16或者32分频,主要用于低速外设。
MCLK 主时钟,MCLK和ACLK 来源相同,MCLK专为CPU提供主频。 SMCLK 子系统时钟,与ACLK来源相同。主要用于高速外设。
主讲人:蒋良茂
中断响应过程
1. 当前指令执行完毕,且满足响应条件; 2. 入栈保护断点:相当于执行 PUSH PC; 3. 入栈保护SR:相当于执行 PUSH SR; 4. 优先级裁决:若有多个中断同时请求,则CPU选
择优先级最高的中断请求进行响应; 5. 中断请求标志的处理:对于单一中断标志的中断
主讲人:蒋良茂
DCORSEL
主讲人:蒋良茂
DCO Type Value
主讲人:蒋良茂
时钟系统示例程序
主讲人:蒋良茂
第二部分:定时器
实际应用中,经常需要对外部事件进行计 数、定时控制、PWM等定制波形输出、脉冲宽度测 量、速度测量、周期/频率测量、事件发生时刻的 捕捉……,这些测量与控制功能均可借助定时器/ 计数器来实现。因此MCU中通常均设计有多个定时 器/计数器。
主讲人:蒋良茂
210 NZC
关中断指令
对 SR 的影响: Status Bits: are not affected Mode Bits: GIE=0
OSCOFF and CPUOFF are not affected 因此等同于__bic_SR_register(GIE);
15
MSP430G2:低功耗模式下的IO学习

voidmain(void)
{
volatileunsignedinti;//Volatiletopreventremoval
WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimer禁止看门狗
BCSCTL3|=LFXT1S_2;//LFXT1=VLO,低频晶振选择内部的超低功
MSP430G2:低功耗模式下的IO学习
MSP430最大的特点是超低功耗,本次学习的是超低功耗模式下的IO操
作。
/******************************************************************
************
*超低功耗频率1.5KHZ
*P1.0有1/100的周期激活
耗,超低频率晶振。
IFG1&=~OFIFG;//ClearOSCFaultflag,清除晶振错误标志位
__bis_SR_register(SCG1+SCG0);//StopDCO禁止数控晶振
BCSCTL2|=SELM_3+DIVM_3;//MCLK=LFXT1/8主时钟源选择
LFXT1,分频系数选择8分频。
P1DIR=0xFF;//AllP1.xoutputs所有的P1端口都设置为输出
P1OUT=0;//AllP1.xresetP1端口值都清零
P2DIR=0xFF;//AllP2.xoutputs所有的P1端口都设置为输出
P2OUT=0;//AllP2.xresetP2端口值都清零
for(;;)//主循环
************/
msp430f5529引脚图

msp430f5529 引脚图
MSP430F5529 实验板(MSP-EXP430F5529)是一个用于MSP430F5529 器件(来自最新一代具有集成USB 的MSP430 器件)的开发平台。
该实验板与CC2520EMK 等众多TI 低功耗射频无线评估模块兼容。
该实验板能帮助设计者快速使用新的F55xx MCU 进行学习和开发,其中F55xx MCU 为能量收集、无线传感以及自动抄表基础设施(AMI)等
应用提供了业界最低工作功耗的集成USB、更大的内存和领先的集成技术。
该实验板上的MSP430F5529 器件可以通过集成ezFET 或通过TI 闪存仿真工具(如MSP-FET430UIF)进行供电和调试。
基于新的MSP430F5529 MCU,可用于需要增强型功能和集成USB 的超低功耗设计
凭借eZ430-RF2500 工具、用于Z-Stack Pro 的开包即用平台以及对各种TI 低功耗射频无线评估模块的支持,可实现快速的低功耗无线开发,
覆盖低于1GHz 和2.4GHz 的频带。
标准实验二MSP430F5529_25Hz方波发生及测量实验

电子科技大学实验报告学生姓名:学号:指导教师:邮箱:一、实验室名称:MSP430单片机实验室二、实验项目名称:25Hz方波发生及峰值幅度测量三、实验原理:(1)通用功能I/O参见实验一中相关原理介绍。
(2)定时器(Timer)定时功能模块是MSP430应用系统中经常用到的重要部分,可用来实现定时控制、延迟、频率测量、脉宽测量和信号产生、信号检测等等。
一般来说,MSP430所需的定时信号可以用软件和硬件两种方法来获得。
MSP430系列有丰富定时器资源:看门狗定时器(WDT),定时器A(Timer_A),定时器B(Timer_B)和定时器D(Timer_D)等。
MSP430系列定时器部件功能,如表2-1所示:表2-1 MSP430中定时器的功能(a)看门狗定时器,主要作用在于当“程序跑飞”时,会产生溢出,从而产生系统复位,CPU需要重新运行用户程序,这样程序就可以又回到正常运行状态。
MSP430 看门狗模块具有以下特性:●8 种软件可选的定时时间●看门狗工作模式●定时器工作模式●带密码保护的WDT 控制寄存器●时钟源可选择●为降低功耗,可停止●时钟失效保护(b)定时器A由一个16位定时器和多路捕获/比较通道组成。
MSP430X5XX / 6XX系列单片机的Timer _A有以下特性:●带有4 种操作模式的异步16 位定时/计数器●输入时钟可以有多种选择,可以是慢时钟,快时钟以及外部时钟●可配置捕获/比较寄存器数多达7 个●可配置的PWM(脉宽调制)输出●异步输入和同步锁存。
不仅能捕获外部事件发生的时间还可锁定其发生时的高低电平●完善的中断服务功能。
快速响应Timer_A中断的中断向量寄存器●8种输出方式选择●可实现串行通讯Timer_A由以下4部分组成:定时计数器:16 位定时/计数寄存器——TAxR时钟源的选择和分频:定时器时钟TACLK 可以选择ACLK,SMCLK 或者来自外部的TAxCLK。
MSP430F5529中文

4xx
25MHz
600uA @ 1MHz 4.8mA @ 8MHz N/A
5xx
290uA @ 1MHz 1.84mA @ 8MHz 230 uA/MHz 8.90mA @ 25MHz
120KB / 8KB (Flash / RAM) Wake-up Time From LPM3 Standby LPM3 Current LPM4 Current Flash ISP Minimum DVCC Port I/O Interrupt Capability Prog. Port Pin Drive Strength Prog. Pull-ups / Pull-downs 12-bit A/D Internal Reference Current 12-bit A/D Active Conversion Current Available MCLK Sources 1us 0.9 – 1.1uA 0.1uA 2.2V P1/P2 N/A All port pins 500 uA 800 uA DCO LFXT1 XT2 (if available) VLO N/A
XT2
REFO
内部32768Hz振荡器
XT2
晶体振荡器 400kHz …… >25MHz
Divider /1/2/4/8/16
FLLREFCLK
MCLK
FLL
FLL
锁频回路
10-bit Frequency Integrator
DCO
数字控制振荡器 ~100kHz …… >25MHz
DCOCLK DCO DCOCLKDIV SMCLK
MSP430F5529 launchpad
日程
介绍MSP430F5xxx (lab-0)
Msp430f5529开发板测周期和AD

Msp430f5529开发板测频率和ADC采样电压必备资料:f5529的中文指导和数据手册(遗憾是汇编语言不是C)中文指导:网上有大侠把英文版的用户指导翻译成中文了数据手册:还没有出现中文版这种神器,不过多看几遍就OK一.定时器A一些基本资料至于寄存器里面含义自己应该可以看懂!这句话我认为有一个极容易产生一个误区,就是TA有7个比较捕获寄存器,当你查看msp430f5529.h的时候,我就发现只有TAxCCTL0,TAxCCR0TAxCCTL1,TAxCCR1TAxCCTL2,TAxCCR2它们都是共用一个TACTL。
压根就是没有3~6例如没有TAxCCTL3,TAxCCR3,我认为单片机上肯定是有7个比较捕获寄存器,就是msp430f5529没有对剩余的四个进行宏定义。
个人想法。
这个最高级,好像大部分的430单片机写的程序都是优先写它。
特点:增计数模式连续计数模式增减计数模式!!!!!!!这几种模式都能用例如增计数模式:TA0CCTL0 = CCIE; // CCR0 interrupt enabledTA0CCR0 = 50000;TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR __bis_SR_register(GIE); // Enter LPM0, enable interrupts 就凭它的权力最多,就应该单独想用一个中断函数与CCTL1,CCTL2区分开来!// Timer0 A0 interrupt service routine#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){}其中的R0代表你用的TA定时器的第几个TA0-----R0TA1-----R1TA2-----R2CCTL0---A0 一个中断对应一个中断源例如我写的是TA2CCTL0和TA2CCR0,则对应的中断就是#pragma vector=TIMER2_A0_VECTOR应该明白了吧!TAxCCTL2,TAxCCR2特点:连续计数模式经我调试TA0CCTL1 = CCIE; // CCR0 interrupt enabledTA0CCR1 = 50000;TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR是进不了中断的,这是血的教训,(如果你采用的是比较模式,千万别想着,TMD 理论上就是这样,为什么进不了中断)应该把 MC_1改为MC_2就OK了.官方这样说这样可以从侧面提问,上文中为什么不是TAxCCRx,而只是TAxCCR0!应该明白了,这里有一点千万要区分开来,这是晕死的教训!TA0R,与TA0CCR1的区别,我也不知道是看了那本破书,或者就是那些5系列一下的430单片机程序可以,我只能感叹F5529真是神器!在中断函数里把cap=TA0CCR1,或者是TA1CCR1,还说TA0R,TA0CCRx其实是一样的,就是计数的储存。
第五章GPIO和中断

例如:实现下列LED的闪烁程序
#include "stm32f10x.h“
#define LED_ALL GPIO_Pin_0| GPIO_Pin_1| GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4
int main(void) { unsigned char j=0; chLsd=0xFE; //打开相应外设的时钟:GPIOA RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
GPIOx_BSRR和GPIOx_BRR寄存器允许 对任何GPIO寄存器的读/更改的独立访问
端口位配置表
I/O端口位的基本结构
输入浮空/上拉/下拉配置
输出配置
复用功能配置
复用功能
对于复用的输入功能,端口必须配置成输入模 式(浮空、上拉或下拉)且输入引脚必须由外部 驱动
对于复用输出功能,端口必须配置成复用功能 输出模式(推挽或开漏)。
函数GPIO_ReadOutputData
读出C口的数据
ReadValue = GPIO_ReadOutputData(GPIOC);
函数GPIO_PinLockConfig
锁定A口的0和1管脚
GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);
GPIO编程实现步骤
1启动外设模块 2设定管脚控制模式 3对GPIO寄存器进行操作
例如:实现下列LED的闪烁程序
#include "stm32f10x.h" int main(void) {
//打开相应外设的时钟:GPIOB RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); //初始化GPIOB,用于驱动LED GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最高输出速度为50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); while (1) {
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MSP430F5529的IO口管脚的中断学习笔记
非常简单的一个程序,在F5529 的开发板上用按键的IO 中断控制LED 的
亮灭:#include int main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR |= BIT0; //将LED1 对应的IO 口P1.0 设置为输出P1OUT &= ~BIT0; //初始化该灯设置为灭P1DIR &= ~BIT7; //将按键1 对应的
IO 口P1.7 设置为输入P1IFG &= ~BIT7; //初始化清空中断标志位P1IE |= BIT7; //P1.7 中断使能P1IES |= BIT7; //下降沿产生中断P1OUT |= BIT7; //P1.7 设置为上拉电阻:OUT = 1; REN = 1; P1REN |= BIT7; __enable_interrupt(); while(1);}#pragma vector = PORT1_VECTOR //固定格式,声明中断向量地址,不能变__interrupt void LED(void) //函数名,可以任意
定义{int i;switch(__even_in_range(P1IV,18)){case 0x10:for (i = 0; i 1.按键需要延时消抖
2. 标志位需要手动清零(此处不完全正确,还有问题需要考虑)
3. 中断程序格式:
#pragma vector = PORT2_VECTOR //固定格式,声明中断向量地址,不能变
__interrupt void fuck430(void) //函数名,可以任意定义
{
switch(__even_in_range(P2IV,18))
{
case 0x06:
break;。