没有合适的资源?快使用搜索试试~ 我知道了~
首页MSP430F6638单片机复习笔记.pdf
资源详情
资源评论
资源推荐

作者:BerenCamlost
适应于南理工王宏波老师的《MSP430单片机》课
紧急更新!!!已完结 。求关注、收藏、点赞、评论
更新啦!还是到第七章,小更新,对部分错误做出修改,还有增加了
部分重要知识点。
参考:
1. MSP430数据手册
2. 王宏波老师的PPT
3. 王宏波老师的实验教程
4. 作者之前写的MSP430笔记:MSP430单片机应用技术
第一章 绪论
1.1 单片机基础
1. 全称:单片微型计算机(Single Chip MicroComputer)
2. 它是把MPU、存储器、I/O口、定时器/计数器、中断系统、时钟电路、A/D-D/A等集成在一个芯片
上构成的微型计算机系统。
3. 单片机又称:单片微控制器、嵌入式微控制器
1.2 MSP430F663x片内资源
MSP430F663x 系列配置有一个高性能12 位ADC、比较器、两个USCI、USB2.0、硬件乘法器、
DMA、四个16 位定时器、带有报警功能的RTC、LCD 驱动器和多达74 个I/O 。
1.3 进制转换
【注意】小数的进制转换
1.4 原码、反码、补码的书写
【注意】一般是8位补码,有时也有16位补码
1.5 位操作
MSP430的C编译器不支持位寻址,所以运算中尽量减少位操作。
第2章 硬件结构
P1OUT|=BIT1; //P1.1置1
P1OUT|=BIT0+BIT2+BIT6+BIT7; //P1.0、 P1.2、 P1.6、 P1.7置1
P1OUT&=~BIT7; //P1.7清0
P1OUT&=~(BIT1+BIT3); //P1.3、 P1.1清0
P1OUT^=BIT0; //P1.0取反
P1OUT^= BIT0+BIT2+BIT4+BIT6; //P1.0、 P1.2、 P1.4、 P1.6取反
1
2
3
4
5
6

2.1 MSP430 CPU 与 MSP430X CPU
1. MSP430 CPU是指MSP430F1xx系列采用的16 位CPU,数据总线宽度16位,地址总线宽度16位,
寄存器16位。寻址空间2
16
=64KB。
2. MSP430X CPU(简称CPUX)是指MSP430F2xx/4xx/5xx/6xx系列采用的CPU,数据总线宽度16
位,地址总线宽度20位,寄存器20位。寻址空间2
20
=1MB。CPUX的算术逻辑单元(ALU)也可以
完成20位的计算。
3. CPUX向下兼容MSP430 CPU。
2.2 PC、SP、SR
1. PC:
取完指令后CPU根据该指令的字节数自动增量PC,因此20位的PC(R0)的值总是指向下一条要执
行的指令。PC总是指向偶地址(bit0=0)。
2. SP:
1. 20位的堆栈指针,始终指向偶地址
2. 【作用】:保护现场和恢复现场。
3. 先进后出
4. 堆栈分两种:
(1)向上增长,栈底占用较低地址,栈顶占用较高地址:8051
(2)向下增长,栈底占用较高地址,栈顶占用较低地址:MSP430、AVR
(3)ARM支持两种增长方式的堆栈。
3. SR:
用作源或目标寄存器的16位状态寄存器(SR,也称为R2)只能用于通过字指令寻址的寄存器
模式。 寻址模式的其余组合用于支持常数发生器。
SCG1:系统时钟发生器1该位可用于根据器件系列启用或禁用时钟系统中的功能; 例如,DCO
偏置启用或禁用。
SCG0:系统时钟发生器0该位可用于根据器件系列启用或禁用时钟系统中的功能; 例如,
FLL(频率锁定环)启用或禁用。
OSCOFF:关闭振荡器。 该位置1时,当LFXT1 CLK不用于MCLK或SMCLK时,它会关闭LFXT1
晶体振荡器。
CPUOFF:CPU关闭。 该位置1时,将关闭CPU。
CPUOFF,OSCOFF,SCGO和SCG1位请求系统进入低功耗模式。
【例如】:关闭和打开锁频环(FLL)
2.3 三种系统复位
__bis_SR_register(SCG0); // Disable the FLL control loop
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
UCSCTL1 = DCORSEL_3; // Set RSELx for DCO = 4.9 MHz
UCSCTL2 = FLLD_1 + 74; // Set DCO Multiplier for 2.45MHz
// (FLL_N + 1) * FLLRef = FdcoCLKDIV
// (74 + 1) * 32768 = 2.45MHz
// Set FLL Div = fDCOCLK/2
__bic_SR_register(SCG0); // Enable the FLL control loop
//其中__bis_SR_register()函数是将SR寄存器中的相应位置1
//__bic_SR_register()函数是将SR寄存器中的相应位置0
1
2
3
4
5
6
7
8
9
10
11

掉电复位BOR
上电复位POR
上电清除PUC
中断名称(不规范) 宏定义
port1口中断 PORT1_VECTOR
port2口中断 PORT2_VECTOR
振荡器失效中断 0xFFFA
WDT间隔定时器模式中断 WDT_VECTOR
WDT看门狗模式中断 0xFFFE
TAxCCR0中断中断 TIMER0_A0_VECTOR
TAIFG中断 TIMER0_A1_VECTOR
ADC12中断 ADC12_VECTOR
串口中断 USCI_A1_VECTOR
2.4 复位状态
在BOR之后,初始设备条件是:
1. RST / NMI引脚配置为复位模式。
2. I / O引脚切换到输入模式。
3. 状态寄存器(SR)复位。
4. 看门狗定时器在看门狗模式下上电。
第3章 中断、时钟与低功耗
3.1 中断
3.1.1 各种中断向量
【注意】排序顺序为实验顺序,不代表优先级大小
中断向量的计算

3.1.2 中断优先级
不同中断源发出的中断请求重要程度不同,每个中断源对应一个优先级,称为中断优先级。
【作用】:多个中断同时发生时,决定哪个中断被响应。
【注意】:
1. 中断优先级只有在多个中断同时到来时才起作用,在中断嵌套中是不考虑的
2. 中断优先级固定不变,取决于模块在中断向量表中的排序
3.1.3 中断嵌套
1. CPU响应某一中断时,在开总中断的前提下若有其他中断发生,CPU将中断当前ISR,执行新的
ISR。
2. MSP430默认关闭中断嵌套,即进入中断服务函数后,默认关闭总中断。如果想要开启中断嵌套需
要用户使用软件开启总中断。
3. 开启和关闭总中断例程中最常用的方式是
3.1.4 中断服务函数
如果是多元中断,可能会在终端服务函数中查看是那种中断置位,即用if或switch语句判断中断标
志位是否为1.例如:
__bis_SR_register(GIE); // 开启总中断
__bic_SR_register(GIE); // 关闭总中断
//其中__bis_SR_register()函数是将SR寄存器中的相应位置1
//__bic_SR_register()函数是将SR寄存器中的相应位置0
1
2
3
4
5
// Timer_A1 Interrupt Vector (TAIV) handler
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR(void)
{
switch(__even_in_range(TA0IV,14))// __even_in_range()本征函数,用于多源
中断的查询。
{
case 0: break; // No interrupt
case 2: break; // CCR1 not used
case 4: break; // CCR2 not used
case 6: break; // reserved
case 8: break; // reserved
case 10: break; // reserved
case 12: break; // reserved
1
2
3
4
5
6
7
8
9
10
11
12
13

name function
XT1 CLK 外部低频,一般接32768Hz
VLOCLK 内部,10K振荡器
REFOCLK 内部,32768Hz
DCOCLK 内部,数控振荡器,借助参考时钟
XT2 CLK 外部高频,4~32MHZ
name function 默认 默认频率 输出方法
ACLK
用于低速外设,可由P1.0输
出
XT1CLK 32768Hz P1.0
MCLK 用于CPU和系统 DCOCLKDIV 1048576Hz
使用 __delay_cycles() ;和
LED查看
SMCLK
用于高速外设,可由P3.4输
出
DCOCLKDIV 1048576Hz P3.4
3.2 UCS时钟系统
3.2.1 五种时钟源和三种时钟信号
【注】DCOCLKDIV时钟为DCOCLK分频得到
3.2.2 FLL——锁频环
case 14: P4OUT ^= BIT1; // TAIFG
break;
default: break;
}
}
14
15
16
17
18
剩余21页未读,继续阅读



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0