完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
1.MSP430f149与hc06蓝牙模块的连接 1.1hc06蓝牙模块 hc06蓝牙模块可以直接在淘宝上购买,去官方店买比较好,资料比较全 hc06蓝牙与各种单片机的连接情况如下 因为msp430的供电也是3.3v,所以hc06蓝牙模块可以用msp430开发板上的vcc和gnd来对其进行供电和共地 然后要注意的是msp430f149的串口TXD 和 RXD 分别是p3.4和p3.5,这里的具体分析可以参考以下文章 MSP430F149串口收发程序详解 1.2单片机模块 单片机所用的编程软件为IAR,所用的下载器为BSL,这些都在我的以下文章的评论区中有下载链接 MSP430 DM430-A开发板学习笔记(一)IAR软件的使用 1.3单片机与hc06实物连接图 2.IAR代码 把我下面写的config.h和main.c文件放入到你们的工程中即可 2.1Config.h #define CPU_F ((double)8000000) #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)) #define uchar unsigned char #define uint unsigned int #define ulong unsigned long /*当BRCLK=CPU_F时用下面的公式可以计算,否则要根据设置加入分频系数*/ #define baud 9600 //设置波特率的大小 #define baud_setting (uint)((ulong)CPU_F/((ulong)baud)) //波特率计算公式 #define baud_h (uchar)(baud_setting>>8) //提取高位 #define baud_l (uchar)(baud_setting) //低位 #define LED8PORT P2OUT //P2接8个LED灯 #define LED8SEL P2SEL //P2接8个LED灯 #define LED8DIR P2DIR //P2接8个LED灯 #define DATAPORT P4OUT //数据口所在端口P4 #define DATASEL P4SEL //数据口功能寄存器,控制功能模式 #define DATADIR P4DIR //数据口方向寄存器 #define CTRPORT P6OUT //控制线所在的端口P6 #define CTRSEL P6SEL //控制口功能寄存器,控制功能模式 #define CTRDIR P6DIR //控制口方向寄存器 #define DCTR0 P6OUT &= ~BIT4 //数码管段控制位信号置低 #define DCTR1 P6OUT |= BIT4 //数码管段控制位信号置高 #define WCTR0 P6OUT &= ~BIT3 //数码管位控制位信号置低 #define WCTR1 P6OUT |= BIT3 //数码管位控制位信号置高 //*********************************************************************** // 共阴数码管显示的断码表 //*********************************************************************** uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //*********************************************************************** // 系统时钟初始化 //*********************************************************************** void Clock_Init() { uchar i; BCSCTL1&=~XT2OFF; //打开XT2振荡器 BCSCTL2|=SELM1+SELS; //MCLK为8MHZ,SMCLK为8MHZ do{ IFG1&=~OFIFG; //清楚振荡器错误标志 for(i=0;i<100;i++) _NOP(); } while((IFG1&OFIFG)!=0); //如果标志位1,则继续循环等待 IFG1&=~OFIFG; } //*********************************************************************** // MSP430内部看门狗初始化 //*********************************************************************** void WDT_Init() { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 } //*********************************************************************** // 关闭数码管 //*********************************************************************** void Close_LED() { DATASEL = 0x00; //设置IO口为普通I/O模式,此句可省 DATADIR = 0xFF; //设置IO口方向为输出 DATAPORT = 0xFF; //P4口初始设置为FF CTRSEL = 0x00; //设置IO口为普通I/O模式,此句可省 CTRDIR |= BIT3 + BIT4; //设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; //P6口初始设置为FF DCTR1; //关掉数码管,以免显示乱码 WCTR1; DATAPORT=0xFF; //关数码管 WCTR0; } 2.2main.c /******************************************************************** //DM430-A型开发板串口接收发送程序,使用单片机的串口0,显示操作通过串口调试助手 //通过电脑与串口线连接开发板串口座,使用串口调试助手发送数据到开发板板 //开发板板会将收到的数据再发送到串口调试助手,接收采用中断模块,发送用查询 //板载的BSL模块可以通过跳线帽设置为USB转串口模式,笔记本电脑没有串口可以直接代替 //开发板的BSL区的RXD和TXD0连接,TXD和RXD0连接即可 //注意使用BSL模块作为USB转串口功能的时候,RTS和TCK跳线帽、DTR和RESET跳线帽要断开 //波特率更改请通过config.h文件,直接更改baud参数即可 //调试环境:EW430 V5.30 ********************************************************************/ #include #include "Config.h" //开发板配置头文件,主要配置IO端口信息 uchar control; //*********************************************************************** // MSP430IO口初始化 //*********************************************************************** void Port_Init() { LED8SEL = 0x00; //设置IO口为普通I/O模式,此句可省 LED8DIR = 0xFF; //设置IO口方向为输出 LED8PORT = 0xFF; //P2口初始设置为FF DATASEL = 0x00; //设置IO口为普通I/O模式,此句可省 DATADIR = 0xFF; //设置IO口方向为输出 DATAPORT = 0xFF; //P4口初始设置为FF CTRSEL = 0x00; //设置IO口为普通I/O模式,此句可省 CTRDIR |= BIT3 + BIT4; //设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; //P6口初始设置为FF } //************************************************************************* // MSP430串口初始化 //************************************************************************* void UART_Init() { U0CTL|=SWRST + CHAR; //复位SWRST,8位数据模式 U0TCTL|=SSEL1; //SMCLK为串口时钟 U0BR1=baud_h; //BRCLK=8MHZ,Baud=BRCLK/N,低位 U0BR0=baud_l; //N=UBR+(UxMCTL)/8,高位 U0MCTL=0x00; //微调寄存器为0,波特率9600bps ME1|=UTXE0; //UART0发送使能 ME1|=URXE0; //UART0接收使能 U0CTL&=~SWRST; //对SWRST进行清零,表示设置已经完成 IE1|=URXIE0; //接收中断使能位,采用发送查询,接收中断,当接收到数据的时候触发中断,将数据存储到buffer缓存器中 P3SEL|= BIT4 + BIT5; //设置IO口为第二功能模式,启用UART功能 P3DIR|= BIT4; //P3.4为TXD,设置TXD0口方向为输出 } //************************************************************************* // 串口0发送数据函数 //************************************************************************* void Send_Byte(uchar data) { while(!(IFG1&UTXIFG0)); //发送寄存器空的时候发送数据 U0TXBUF=data; } //************************************************************************* // 串口0发送字符串函数 //************************************************************************* void Print_Str(uchar *s) { while(*s != ' |