前言
前段时间兴趣使然用串口屏做了个基于MSP432蓝牙串口屏控制的小车车,现在记录一下,话不多说直接上效果。
一、串口屏蓝牙助手设计
二、keil5代码设计
1.main.c
#include "main.h"
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "systeminit.h"
#include "motor.h"
#include "string.h"
#include "driverlib.h"
#include "delay.h"
#include "usart.h"
#include "uart_calc.h"
#include "motor.h"
/* 全局变量申明区 */
// u8 a=0;
// u16 len ;
#define SLAVE_ADDRESS 0x48
#define NUM_OF_REC_BYTES 10
/* 函数调用申明区 */
void Wait_Connection(void)
{
unsigned char str[8];
sprintf((char*)str,"sw0.val=1\xff\xff\xff");
while(keyvalue!=5)
{
GPIO_toggleOutputOnPin(GPIO_PORT_P2,GPIO_PIN1);
USART1PutString(str);
delay_ms(300);
}
GPIO_setOutputLowOnPin(GPIO_PORT_P2,GPIO_PIN1);
}
int main(void)
{
u8 speed=1;
SystemClockInit(HFXT);//系统时钟初始化(系统主时钟)
SystemClockInit(DCO);//系统时钟初始化(子系统时钟)
Usart1tInit();
MOTOR_Init();
Wait_Connection();//等待屏幕反馈连接
while(1)
{
switch(keyvalue)
{
case 0:break;
case 1:MOTOR_G0();break;
case 2:MOTOR_Back();break;
case 3:MOTOR_Left();break;
case 4:MOTOR_Right();break;
case 5:MOTOR_Stop();break;
}
}
}
2.串口1中断程序
void EUSCIA1_IRQHandler(void)
{
u8 rev ;
uint32_t status = UART_getEnabledInterruptStatus(EUSCI_A1_BASE);//中断接收标志
if(status & EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG) //说明接收到数据
{
rev=UART_receiveData(EUSCI_A1_BASE);
//USART1PutChar( UART_receiveData(EUSCI_A1_BASE));//将接收到的数据发送出去
switch(rev)
{
case 0x00:keyvalue=0;break;
case '1':keyvalue=1;break;
case '2':keyvalue=2;break;
case '3':keyvalue=3;break;
case '4':keyvalue=4;break;
case '5':keyvalue=5;break;
case 0x06:keyvalue=6;break;
case 0x07:keyvalue=7;break;
}
UART_clearInterruptFlag(EUSCI_A1_BASE, status);//清除中断标志
}
}
总结
串口屏还是很好用的,相当于可以自定义很多个按键,我这里只是简单的设计一下也是抛砖引玉吧,相信大家能做的更好,源码工程已经上传等待审核完成我会放上链接,需要的朋友麻烦点赞关注一下然后在评论区留下邮箱我有空就会私发(大三考研ing比较忙),实在着急要那就直接下载吧。