网站开发 .net,满堂彩谁做的网站,重庆电子工程职业学院,游戏网站建设多少一、硬件连接
1.JQ8900引脚定义 通过阅读JQ8900的数据手册#xff0c;可以了解到驱动JQ8900有许多种方式#xff0c;IO驱动#xff0c;一线串口驱动#xff08;VPP#xff09;#xff0c;两线串口驱动#xff08;RX#xff0c;TX#xff09;#xff0c;这里我使用两…一、硬件连接
1.JQ8900引脚定义 通过阅读JQ8900的数据手册可以了解到驱动JQ8900有许多种方式IO驱动一线串口驱动VPP两线串口驱动RXTX这里我使用两线串口驱动。所以我需要连接到XR806开发板的一组串口上。
2.XR806开发板串口
通过查阅手册可以知道XR806有3组串口 我选择串口1进行通信也就是PB14PB15引脚。
3.开发板和模块连接
我们只需要将开发板的PB15引脚接到JQ8900模块的TX引脚开发板的PB14引脚接到JQ8900模块的RX引脚。
二、软件编写
1.程序思路
通过串口1驱动JQ8900模块播放音乐通过XR806的按键去控制音乐的切换播放暂停上一曲下一曲停止等每按下一次按键XR806板载LED就会进行一次取反操作用来显示按键按下效果。
2.创建工程结构
目录结构如下面红框所示。
3.编写代码
1.key.h
#ifndef _KEY_H
#define _KEY_H#define GPIO_ID_PA11 11
#define GPIO_ID_PA21 21extern uint8_t key_status ;
extern uint8_t key_value;void key_init(void);
void key_scan(void);#endif2.key.c
#include stdio.h
#include ohos_init.h //
#include kernel/os/os.h
#include iot_gpio.h //
#include key.huint8_t key_status 1;
uint8_t key_value 0;void key_init(void)
{printf(key test start\r\n);IoTGpioInit(GPIO_ID_PA11); // 初始化IO口io口复位为悬空输入IoTGpioSetDir(GPIO_ID_PA11, IOT_GPIO_DIR_IN); IoTGpioInit(GPIO_ID_PA21); // 初始化IO口io口复位为悬空输入IoTGpioSetDir(GPIO_ID_PA21, IOT_GPIO_DIR_OUT); // 设置IO口为输出模式}void key_scan(void)
{uint8_t keyVal 1;uint8_t ledVal 0;IoTGpioGetInputVal(GPIO_ID_PA11,keyVal);// printf(keyVal:%d\r\n,keyVal);if(keyVal 0){OS_MSleep(10);IoTGpioGetInputVal(GPIO_ID_PA11,keyVal);if(keyVal 0){key_status 1;key_value ;if(key_status 5)key_value 1;// 按键执行操作IoTGpioGetOutputVal(GPIO_ID_PA21,ledVal);// printf(ledVal:%d\r\n,ledVal);if(ledVal 1){IoTGpioSetOutputVal(GPIO_ID_PA21, 0); // printf( set 0\r\n); }else{IoTGpioSetOutputVal(GPIO_ID_PA21, 1); // printf( set 1\r\n);}// IoTGpioGetOutputVal(GPIO_ID_PA21,ledVal);// printf(ledVal set after:%d\r\n,ledVal);while(keyVal 0){IoTGpioGetInputVal(GPIO_ID_PA11,keyVal);}}}
}3.JQ8900.h
#ifndef _JQ8900_H
#define _JQ8900_Hextern const uint8_t play_Buffer[4];
extern const uint8_t pause_Buffer[4];
extern const uint8_t stop_Buffer[4];
extern const uint8_t previous_Buffer[4];
extern const uint8_t next_Buffer[4];#endif
4.JQ8900.c #include stdio.h
#include ohos_init.h //
#include kernel/os/os.h
#include string.h
#include driver/chip/hal_uart.h
#include JQ8900.h#define UARTID UART1_ID/* 音量为0-30级 上电默认为20 */
uint8_t JQ8900Volume 20; const uint8_t play_Buffer[4] {0xAA,0x02,0x00,0xAC};
const uint8_t pause_Buffer[4] {0xAA,0x03,0x00,0xAD};
const uint8_t stop_Buffer[4] {0xAA,0x04,0x00,0xAE};
const uint8_t previous_Buffer[4] {0xAA,0x05,0x00,0xAF};
const uint8_t next_Buffer[4] {0xAA,0x06,0x00,0xB0};
/* 其他命令请查看数据手册*//* 串口发送一个字节 */
void JQ8900_SendChar(char val)
{HAL_UART_Transmit_Poll(UARTID, (uint8_t *)val, 1);
}
5.main.c
#include stdio.h
#include ohos_init.h //
#include kernel/os/os.h
#include iot_gpio.h //
#include string.h
#include driver/chip/hal_uart.h
#include key.h
#include JQ8900.h#define UARTID UART1_IDstatic OS_Thread_t g_main_thread;static int uart_init(void)
{HAL_Status status HAL_ERROR;UART_InitParam param;param.baudRate 9600; // 波特率为9600param.dataBits UART_DATA_BITS_8;param.stopBits UART_STOP_BITS_1;param.parity UART_PARITY_NONE;param.isAutoHwFlowCtrl 0;status HAL_UART_Init(UARTID, param);if (status ! HAL_OK)printf(uart init error %d\n, status);return status;
}static void MainThread(void *arg)
{key_init(); uart_init();printf(you can connect to uart1 serial com.\n);printf(uart%d used for echo.\n, UARTID);while (1) {key_scan();if(key_status 1){ // 按键按下可以进行操作key_status 0;switch(key_value){case 0:HAL_UART_Transmit_Poll(UARTID, (uint8_t *)play_Buffer, 4);break;case 1:HAL_UART_Transmit_Poll(UARTID, (uint8_t *)pause_Buffer, 4);break;case 2:HAL_UART_Transmit_Poll(UARTID, (uint8_t *)play_Buffer, 4);break;case 3:HAL_UART_Transmit_Poll(UARTID, (uint8_t *)previous_Buffer, 4);break;case 4:HAL_UART_Transmit_Poll(UARTID, (uint8_t *)next_Buffer, 4);break;} }}
}void UARTMain(void)
{printf(UART Test Start\n);if (OS_ThreadCreate(g_main_thread, MainThread, MainThread, NULL,OS_THREAD_PRIO_APP, 4 * 1024) ! OS_OK) {printf([ERR] Create MainThread Failed\n);}
}SYS_RUN(UARTMain); // Harmony线程入口
6.BUILD.gn
import(//device/xradio/xr806/liteos_m/config.gni)static_library(app_uart) {configs []sources [src/main.c,src/JQ8900.c,src/key.c,]cflags board_cflagsinclude_dirs board_include_dirsinclude_dirs [//kernel/liteos_m/kernel/arch/include,include,//base/iot_hardware/peripheral/interfaces/kits,]}7.修改ohosdemo/BUILD.gn 三、编译下载。 下载过程我就不写了可以去看上一篇文章。
四、效果
1.终端输出 2.视频展示
视频链接