将HC05蓝牙模块连接到MSP430端口无法接收主机数据,但蓝牙从机连接到电脑上是可以接收到主机的数据的
从机端口代码:
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "driverlib.h"
bool UART_Init(uint16_t baseAddress, uint32_t Baudrate)
{
float UART_Temp = 0;
USCI_A_UART_initParam huart = {0};
if(baseAddress == USCI_A0_BASE) //P3.3, P3.4 = USCI_A0 TXD/RXD
{
GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P3, GPIO_PIN3);
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P3, GPIO_PIN4);
}
else if(baseAddress == USCI_A1_BASE) //P4.4, P4.5 = USCI_A1 TXD/RXD
{
GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P8, GPIO_PIN2);
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P8, GPIO_PIN3);
}
if(Baudrate <= 9600)
{
huart.selectClockSource = USCI_A_UART_CLOCKSOURCE_ACLK;
UART_Temp = (float)UCS_getACLK()/Baudrate;
从机MAIN:
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <msp430.h>
#include <msp430f6638.h>
#include "driverlib.h"
#include "clk.h"
#include "dr_lcdseg.h" //调用段式液晶驱动头文件
/**
* main.c
*/
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
P4DIR |=BIT5+BIT6+BIT7; //控制LED5、LED4、LED3的IO口P4.5、P4.6、P4.7设置为输出
P5DIR |=BIT7;//控制LED2的IO口P5.7设置为输出
P8DIR |=BIT0;//控制LED1的IO口P8.0设置为输出
initLcdSeg(); //初始化段式液晶
clk_Init ();
UART_Init(USCI_A1_BASE, 9600);
__bis_SR_register(GIE);
while(1)
主机端口:
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "driverlib.h"
#include"UART.h"
void UARTInit()
{
GPIO_setAsPeripheralModuleFunctionInputPin(
GPIO_PORT_P3,
GPIO_PIN3+GPIO_PIN4
);
USCI_A_UART_initParam param1 = {0};
param1.selectClockSource = USCI_A_UART_CLOCKSOURCE_SMCLK;
param1.clockPrescalar = 52;
param1.firstModReg = 1;
param1.secondModReg = 0;
param1.parity = USCI_A_UART_NO_PARITY;
param1.msborLsbFirst = USCI_A_UART_LSB_FIRST;
param1.numberofStopBits = USCI_A_UART_ONE_STOP_BIT;
param1.uartMode = USCI_A_UART_MODE;
param1.overSampling = USCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION;
if (STATUS_FAIL == USCI_A_UART_init(USCI_A0_BASE, ¶m1)){
蓝牙配对成功,端口波特率均为9600,蓝牙都只能在电脑上接受数据而无法在单片机上接收数据,发送数据是没有问题的,但单片机直接使用串口通信可以接受数据顺利执行代码