msp430f5529简单uart程序

合集下载

msp430f5529定时器实验

msp430f5529定时器实验

定时器实验一、实验目的1、学习MSP430F5529定时器的使用。

2、学习MSP430F5529定时器相应的寄存器的使用。

二、实验任务LED灯的电路图如图*所示:图* LED灯的电路图任务:编程实现LED1 以1Hz频率闪烁。

三、程序流程图实现LED1 以1Hz频率闪烁的程序流程图如图*所示四、程序代码#includ#include<msp430.h>#define CPU_F ((double)1000000)#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) unsigned char count=0;int main(void){//定时器口中断控制函数WDTCTL = WDTPW | WDTHOLD; // stop watchdog timerP1DIR |= BIT0; //P1.0置为输出TA0CCTL0 = CCIE; //CCR0中断使能TA0CCR0 = 50000; //设定计数值TA0CTL =TASSEL_2+MC_1+TACLR;//SMCLK,增计数模式,清除TAR_bis_SR_register(LPM0_bits+GIE);//低功耗模式0,使能中断}#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){count++;if(count==20){count=0;P1OUT ^= BIT0; //1s改变LED1灯状态 }}五、遇到的问题及解决办法无六、实验小结练习了单片机mspf5529的编程。

MSP430F5529测频法测量信号频率

MSP430F5529测频法测量信号频率

MSP430F5529测量频率-----测频法信号变换电路过零比较器,lm393输出上拉电阻,两电阻分压程序#include <>#include ""//测频法,上限1Mhz//看门狗定时1s,开门狗中断处理程序开启捕获器,捕获1s中所有的上升脉冲,脉冲个数即为频率/*优化的反向可以将开门够定时1S使用定时器去定时1s**/long fre=0;char buf[60]="\0";void SetVcoreUp (unsigned int level){// Open PMM registers for writePMMCTL0_H = PMMPW_H;// Set SVS/SVM high side new levelSVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;// Set SVM low side to new levelSVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;// Wait till SVM is settledwhile ((PMMIFG & SVSMLDLYIFG) == 0);// Clear already set flagsPMMIFG &= ~(SVMLVLRIFG + SVMLIFG);// Set VCore to new levelPMMCTL0_L = PMMCOREV0 * level;// Wait till new level reachedif ((PMMIFG & SVMLIFG))while ((PMMIFG & SVMLVLRIFG) == 0);// Set SVS/SVM low side to new levelSVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;// Lock PMM registers for write accessPMMCTL0_H = 0x00;}void init_clock(){SetVcoreUp (0x01);SetVcoreUp (0x02);SetVcoreUp (0x03);UCSCTL3 = SELREF_2; // Set DCO FLL reference = REFOUCSCTL4 |= SELA_2; // Set ACLK = REFO__bis_SR_register(SCG0); // Disable the FLL control loopUCSCTL0 = 0x0000; // Set lowest possible DCOx, MODxUCSCTL1 = DCORSEL_7; // Select DCO range 50MHz operationUCSCTL2 = FLLD_0 + 609; // Set DCO Multiplier for 25MHz// (N + 1) * FLLRef = Fdco// (762 + 1) * 32768 = 25MHz// Set FLL Div = fDCOCLK/2__bic_SR_register(SCG0); // Enable the FLL control loop__delay_cycles(782000);do{UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);// Clear XT2,XT1,DCO fault flagsSFRIFG1 &= ~OFIFG; // Clear fault flags}while (SFRIFG1&OFIFG); // Test oscillator fault flag}void send_char(char sc){UCA0TXBUF=sc;while(!(UCA0IFG&UCTXIFG));}void send_string(char *s){while(*s!='\0'){send_char(*s++);}}init_uart(){P3SEL |= BIT3+BIT4; // ,4 = USCI_A0 TXD/RXDUCA0CTL1 |= UCSWRST; // **Put state machine in reset**UCA0CTL1 |= UCSSEL__SMCLK; // SMCLKUCA0BR0 = 173; // 1MHz 115200 (see User's Guide)UCA0BR1 = 0; // 1MHz 115200 UCA0MCTL |= UCBRS_5 + UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**// UCA0IE |= UCRXIE; // Enable USCI_A0 RX interruptsend_string("CLS(0);\r\n");}int main(void) {WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timerinit_clock();//初始化系统时钟为20 MHzinit_uart();//串口波特率为115200bpsWDTCTL=WDT_ADLY_1000 ;//开门狗定时1sP1DIR &= ~BIT2; // inP1SEL |= BIT2; //捕获输入SFRIE1|=WDTIE; //开看门狗定时器中断__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, enable interrupts__no_operation(); // For debugger return 0;}void measure_fre(){if(fre>=500)sprintf(buf,"DS16(0,60,'频率:% ',4);\r\n",fre*;if(fre<=52)sprintf(buf,"DS16(0,60,'频率:% ',4);\r\n",(fre)*;else if(fre<=208)sprintf(buf,"DS16(0,60,'频率:% ',4);\r\n",(fre+1)*;else if(fre<=496)sprintf(buf,"DS16(0,60,'频率:% ',4);\r\n",(fre+3)*;send_string( buf);fre=0;TA0CTL = TASSEL_2 + MC_2 + TACLR+TAIE; // SMCLK, 连续mode, clear TAR 8分频下限可以测到8Hz。

mspf串口程序程序uart完整版

mspf串口程序程序uart完整版

m s p f串口程序程序u a r t集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]/*****用串口助手发什么回复什么****/#include "msp430f5529.h"// ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz// P3.4,5——USCI_A0 TXD/RXD;P9.4,5——USCI_A2 TXD/RXD;P10.4,5——USCI_A3 TXD/RXD;unsigned int table[12]={1,2,3,4,5,6,7,8,9,10,11,12};unsigned int j;void Delay(unsigned int time){unsigned int i,k;for(i=0;i<255;i )for(k=0;k<time;k )_NOP();}void send_buf(unsigned char *ptr){while(*ptr !='\0') //C语言里字符串末尾自动加“\0”(ASCII码值为0) {while (!(UCA1IFG&UCTXIFG));UCA1TXBUF=*ptr; //发送字符对应的ASCII码,12864指针可设置自动指向下一个显示地址*ptr ;Delay(50);}}void main(void){WDTCTL = WDTPW WDTHOLD; // Stop WDTP1DIR|=BIT0;P1OUT|=BIT0;P2IE |= BIT1; //设置p2.1可以中断P2IES |= BIT1; //设置p2.1为下降沿中断P2IFG &= ~BIT1;//设置p2.1为0 无中断请求P2REN |= BIT1; //设置p2.1为上下拉电阻使能P2OUT |= BIT1;P4SEL |=BIT4 BIT5 ; // P5.6,7 = USCI_A1 TXD/RXDUCA1CTL1 |= UCSWRST; // **Put state machine in reset**UCA1CTL1 |= UCSSEL_2; // SMCLKUCA1BR0 = 9; // 1MHz 115200 (see User's Guide)UCA1BR1 = 0; // 1MHz 115200UCA1MCTL |= UCBRS_1 UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**UCA1IE |= UCRXIE; // Enable USCI_A1 RX interrupt__bis_SR_register(LPM0_bits GIE); // Enter LPM0, interrupts enabled}// Echo back RXed character, confirm TX buffer is ready first,发送数据之前确定发送缓存准备好#pragma vector=USCI_A1_VECTOR__interrupt void USCI_A1_ISR(void){switch(__even_in_range(UCA1IV,4)){case 0:break; // Vector 0 - no interrupt case 2: // Vector 2 - RXIFGwhile (!(UCA1IFG&UCTXIFG)); // USCI_A1 TX buffer ready UCTXIFG(USCI Transmit Interrupt Flag)switch(UCA1RXBUF){case 0x00:{P1OUT^=BIT0;UCA1TXBUF=UCA1RXBUF;}break;case 0x01:{UCA1TXBUF=table[j];j ;if(j==12) j=0;}break;} // TX -> RXed characterbreak;case 4:break; // Vector 4 - TXIFGdefault: break;}}// UCTXIFG=0x02,UCA1IFG&UCTXIFG,当UCA1IFG的UCTXIFG位为1时,说明UCA1TXBUF为空,//跳出while循环循环;当UCTXIFG位为0时UCA1TXBUF不为空,停在循环。

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 的频带∙用于各种用户界面和娱乐游戏的102x64 点-矩阵LCD∙多个输入/输出选项可实现快速的系统开发:电容触摸按钮/滑块、按钮、USB、micro SD 插槽、LED 和滚轮。

∙集成ezFET 可让实验板直接插到PC 上,通过USB 实现供电和调试。

∙JTAG 接头连接,可借助MSP-FET430UIF 用于4 线JTAG 编程和调试。

∙与Code Composer Studio 兼容,免费的16KB IDE∙已预安装完整的用户体验软件演示,源码提供下载∙PCB 设计提供下载(Eagle PCB)特性∙集成MSP430F5529:o128KB 闪存/ 8KB SRAM(如禁用USB,则为10kB)o全速USB 2.0o16 位RISC 架构,高达25MHzo 3 个Timer_A 块、1 个Timer_B 块o 2 个USCI (UART/SPI/I2C) 块、16 通道12 位ADC12_A、12 通道Comp_B、63 I/O∙USB 开发平台∙ 5 块电容触摸条(按钮或滑块功能)∙microSD Card 插槽,附1GB 内存卡。

MSP430F5529单片机

MSP430F5529单片机

• PxIN 设置成输入时有效,P2IN内存着P2的16个引脚当前的高低电 平状态 • PxOUT 设置成输出时有效,PxOUT =1(高电平)/0(低电平)
• PxSEL 外设功能选择 如引脚作为AD输入、TXD、RXD • PxREN 内部上拉/下拉电子(输入) • PxDS 实现额外的的驱动强度(输出) • PxIE/PxIES/PxIFG 终端相关
MSP430F5529
特点、参数
工作电压:1.8—3.6V 12位AD转换 USB驱动 128KB flash,8KBRAM 4个16位计时器 通用串行接口:I2C,UART,SPI 16位CPU,最高可达25MHZ
GPIO
• PxDIR 方向(输入 vs 输出)
– P1DIR |= BIT0 p1.0设置成输入 检测引脚状态 – P1DIR ^= (~BIT1) p1.0设置成输出 高低电。 2、有多种时钟源可供选择,内带时钟发生器。 3、多达12个外部输入 4、四种转换方式:
1)、单通道单次转换模式: 2)、单通道多次转换模式: 3)、序列通道单次转换模式: 4)、序列通道多次转换模式:
5、ADC12MEM0~ADC12MEN16存储转换结果 6、初始化程序:引脚功能选择、选择时钟源和预分频(达 到需要的采样频率)、参考电压(VR+,VR-)、转换方式 、开中断
• 2、SPI(同步串行通信) • 3、I2C
程序演示
1. ADC 2. UART
USCI(通用串行通信接口)
• 1、 UART(异步串行通讯)
(1) 初始化:PxSEL选择端口UART功能、时钟源选择、波特率设置、开中断 (2)UART发送 while (!(UCA0IFG&UCTXIFG)); UCA0TXBUF = 100; (1) 接受UART receive = UCA0RXBUF;

Msp430f5529时钟系统与定时器以及中断

Msp430f5529时钟系统与定时器以及中断
在MCU中,无论是定时功能还是计数功能,实 际上都是由n位(8位、16位、32位等)的加法/减 法计数器实现,区别仅在于计数输入信号的不同 。
一般地讲,计数器的计数输入信号是外部事 件(脉冲信号),而定时器的计数输入信号则是 MCU中的时钟信号或经过分频后的时钟信号。
MSP430F5529定时器分为看门狗定时器、定时 器A和定时器B。
00: stop mode 01: up mode 10: continuous mode 11: up/down mode
1: interrupt pending
1: TA interrupt enabled
1: reset TAR ,clock divider and count direction for up/down mode. The TACLR bit is automatically reset and is always read as zero.
定时器 A 的四种计数方式(Count Mode)
MCx count mode
0 0: stop mode 0 1: up mode 1 0: continuous mode 1 1: up/down mode
Mode Control
Stop mode : the timer is halted
中断响应过程
1. 当前指令执行完毕,且满足响应条件; 2. 入栈保护断点:相当于执行 PUSH PC; 3. 入栈保护SR:相当于执行 PUSH SR; 4. 优先级裁决:若有多个中断同时请求,则CPU选
择优先级最高的中断请求进行响应; 5. 中断请求标志的处理:对于单一中断标志的中断
源请求,则由CPU自动清零该中断标志;对于有 多个中断标志的中断源请求,则中断标志的清零 处理交由中断服务子程完成(以便于中断服务子 程区分本次中断到底是由哪一个/哪些中断标志 请求的); 6. 清零SR(关中断,结束低功耗方式); 7. 装载中断向量至PC,转去执行中断服务子程。

MSP430_UART串口模块

MSP430_UART串口模块

MSP430_UART串口模块MSP430--UART模块UART是通用异步串行接口的简称。

串行通信接口是用来与单片机外界系统进行通信桥梁,比如可以吧单片机ADC 转换的数据通过串口发送给PC机(上位机),经上位机处理之后在发回给单片,达到通信的目的。

TI公司的MSP430系列单片机均具有UART功能,其中大部分还和SPI,I2C功能复用,通过相关寄存器的配置,可以很轻松地就实现了UART,SPI,I2C的通信功能。

在此以MSP430x149为例介绍UART 功能及其实现过程。

1.异步通信的结构:2.UART数据格式(数据协议):异步通信再不发送数据的时候,通信线路上总是呈现高电平状态,称为空闲状态。

当有数据发送是,信号线变成低电平,并持续一位的时间用于表示发送字符的开始,该为称为起始位。

起始位之后在信号线上依次出现发送的数据。

起始位,数据位由高到低7/8位,地址位0/1位,奇偶校验位奇偶或无,停止位1/2位。

数据位位数、地址位、奇偶校验位、停止位均可由单片机内部寄存器控制;这款单片机都有两个USART模块,有两套独立的寄存器组;以下寄存器命中出现x代表0或是1,0代表对应0模块的寄存器,1代表对应1模块的寄存器;其中,与串口模式设置相关的控制位都位于UxCTL寄存器,与接收相关的控制位都位于UxRCTL寄存器,与发送相关的控制位都位于UxTCTL寄存器;波特率设置用UxBR0、UxBR1、UxMCTL三个寄存器;接收与发送有独立的缓存UxRXBUF、UxTXBUF,并具有独立的移位寄存器和独立的中断;中断允许控制位位于IE1/2寄存器,中断标志位位于IFG1/2寄存器。

3.波特率设置:430的波特率设置用三个寄存器实现:UxBR0:波特率发生器分频系数低8位。

UxBR1:波特率发生器分频系数高8位。

UxMCTL:波特率发生器分频系数的小数部分实现。

设置波特率时,首先要选择合适的时钟源:USART模块可以设置的时钟源有UCLK引脚、ACLK、SMCLK;对于较低的波特率(9600以下),可选ACLK作为时钟源,这样,在LPM3(低功耗3)模式下,串口仍能正常发送接收数据;另外,由于串口接收过程有一个三取二判决逻辑,这至少需要三个时钟周期,因此分频系数必须大于3;波特率高于9600时,将不能使用ACLK作为时钟源,要调为频率较高的SMCLK作为时钟源;另外还可以外部输入UCLK时钟。

MSP430F5529制作的施工车辆信息监测系统.doc

MSP430F5529制作的施工车辆信息监测系统.doc

MSP430F5529制作的施工车辆信息监测系统一,功能介绍:本系统主要用于监测施工车辆运行的速度,运行时路面的温度以及车辆的位置信息。

然后将这些这些信息借助移动的网络发送到服务器上去并将温度,速度,时间信息通过显示屏进行显示。

系统的控制核心选用的是TI的msp430F5529,考虑到整个系统用到的IO管脚比较多,所以选用了该款430。

一下是整个系统的方案选型:(1)测速系统采用的霍尔器件,430单片机对霍尔器件输出的脉冲进行输入捕获对其频率进行测量就可计算出车辆的速度;(2)测量车辆运行的路面温度系统我采用的是红外测温温度传感器,430通过smBUS总线方式读取温度传感器的数据,然后进行数据处理,显示在LCD屏上。

(3)计时系统我选用了的是DS1302时钟芯片,外加上一个3v的纽扣电池起到掉电时间保护左右,然后430负责读取时间进行显示。

(4)车辆定位系统我选用的GPS模块,430通过GPS读取到车辆的经纬度信息。

(5)数据发送装置我采用的GPRS模块将采集到速度,温度,时间,位置信息发送到我们自己建立的服务器上去(6)LCD屏,我选用的是240*128的LCD屏,这样尺寸的屏刚好满足我设计的要求。

(7) 考虑到有时没有移动信号,我们在电路上设计了SD卡,这样当GPRS 没有信号时,我们的数据可以自动的到存到我们的SD卡中二,系统框图上图就是我整个设计的框图。

(1)电源给整个系统供电,输入12v通过两种稳压芯片,分别稳压到5v和3.3v 给整个系统供电。

(2)测速,键盘, LCD我采用的都是IO进行和430单片机进行连接(3)GPS和GPRS采用的是UART和430进行连接(4) SD卡采用的是SPI接口和430进行连接三,系统原理图图2 电源图3 LCD和时钟芯片图4 430核心部分整个系统的原理图如图2,3,4所示。

图2是整个系统的电源部分,图3是lcd 显示屏,图4是整个430核心部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档