msp430使用

msp430使用,第1张

在MSP430F149中TBCTL表示定时器B的控制寄存器。MCx是该寄存器的第5-4位,是定时器B的工作模式控制位,表示定时器的工作方式。

在头文件中

#define MC_0 (00x10u) / Timer A mode control: 0 - Stop /

这是一个宏定义,MC_0的值即为:00x10u,它是一个无符号乘法运算,结果就是为0,即MC_0的值实际为:0x00(因为这个值比较特殊,所以现用MC_2举例)如果是#define MC_2 (20x10u) ,则MC_2=0x20,二进制为:0010 0000,正好第5位为1。

TBCTL & MC_0 是TBCTL与MC_0按位相与的运算,其作用就是判断MCx(TBCTL第5位和第4位的值)是否为0。

PC就是存放当前程序运行到的代码所在地址的寄存器,所以里边是地址。

栈,你可以理解成以前医院里插挂号条那个签子,如果后边插上去的单子,就得先拿下来,之前插上去的,反而要后拿;或者认为是个桶,放里放和桶一样大的饼,要把底下的饼拿出来,就得等上边的饼拿走,新放上去的饼能新拿出来。所以叫“后进先出”

中断向量就是中断源触发后CPU要跳转到的特定地址,中断,就是打断之前正在执行的东西,比如你正在吃饭,电话响了,你要做的就是先放下碗筷(相当于压栈,保护吃饭现场),然后接电话(跳转到中断服务),接完以后,挂机,拿碗筷(RET,恢复吃饭现场),然后继续吃。

姓名:杨汉雄

学号:19011210569

嵌牛导读MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在 串行通信 与 并行通信 之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。MSP430含有两个USCI外设支持复数的串行通信协议,不同的USCI模块支持不同的协议。其中USCI_Ax支持UART,IrDA,LIN,SPI协议;USCI_Bx支持IIC,SPI协议。

嵌牛正文

        UART是通用异步串行接口的简称。串行通信接口是用来与单片机外界系统进行通信桥梁,比如可以吧单片机ADC转换的数据通过串口发送给PC机(上位机),经上位机处理之后在发回给单片,达到通信的目的。TI公司的MSP430系列单片机均具有UART功能,其中大部分还和SPI,I2C功能复用,通过相关寄存器的配置,可以很轻松地就实现了UART,SPI,I2C的通信功能。本文对MSP430串口的寄存器进行了小结。

UCAxCTL0寄存器

7-UCPEN 校验位使能 0=关闭 1=开启

6-UCPAR 校验方式选择 0=奇校验 1=偶校验

5-UCMSB 数据方向 0=低位先 1=高位先

4-UC7BIT 单次数据最大长度   0=八位数据 1=七位数据

3-UCSPB 停止位选择   0=1位停止位 1=2位停止位

2-1-UCMODEx 串口模式选择位 

00=uart模式

 01= Idle-line multiprocessor mode 

10= Address-bit multiprocessor mode

11=UART mode with automatic baud-rate detection

0-UCSYNC 同步模式使能位 0=异步模式 1=同步模式

UCAxCTL1寄存器

7-6 UCSSELx 串口时钟选择位 00=外部时钟 01=ACLK 10=SMCLK 11=SMCLK

5 UCRXEIE 接收错误中断使能位 0=关闭中断 1=开启中断

4 UCBRKIE 接收完成中断使能位  0=关闭中断 1=开启中断

3 UCDORM 睡眠模式使能  0=关闭 1=开启

2 UCTXADDR帧数据选择  0=下一帧送数据 1=下一帧送地址

1 UCTXBRK数据停止帧选择 0=下一帧非停止 1=下一帧停止

0 UCSWRST软件复位使能 拉高时开启复位将发送缓存接收缓存中断标志等清零

串口波特率设置

        MSP430串口可以使用选择低频晶振或高频晶振来产生串口通信的波特率,以此节省功耗,通过配置UCAxMCTL 调制控制寄存器的第0位:UCOS16=0进入低频模式 UCOS16=1进入高频模式(ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz)。

UCAxBR0 设置波特率的低八位

UCAxBR1 设置波特率的高八位

一般来说波特率可由时钟分频得到,分频数N=晶振频率/想得到的波特率

但N往往不是整数,所以需要用到调制功能。 通过UCAxMCTL调制控制寄存器可以配置出相应的小数部分。

7-4位UCBRFx 高时钟模式下的调制值;

3-1位UCBRSx 低时钟模式下的调制值

0位UCOS16 高低频模式的选择

调制功能有两种:

1通过低频时钟调制低波特率(32768K)

整数部分UCBRx=N;

小数部分UCBRSx=round[(N-INT(N)8]  //ROUND为四舍五入

2通过高频时钟调制低波特率(1048576时钟预分频后)

整数部分UCBRx=INT(N/16)

小数部分UCBRFx=round([(N/16)-INT(N/16)]16)

比如要在低频模式下得到9600波特率,先计算分频数N=32768/9600=341,取整得N=3,则应向UCAxBR0 填入0x0000 0011

取小数位0418=328 则应向 UCBRSx  寄存器中填入0x0000 0011

以上就是关于msp430使用全部的内容,包括:msp430使用、MSP430中PC的相关问题、MSP430F6638单片机uart寄存器小结等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10051780.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存