基于STM32F103C8T6下的無線鼠標,請參考使用
發射電路:
0.png (152.63 KB, 下載次數: 57)
下載附件
2018-8-16 17:47 上傳
接受電路:
0.png (135.26 KB, 下載次數: 46)
下載附件
2018-8-16 17:47 上傳
單片機源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "string.h"
- #include "usb_lib.h"
- #include "hw_config.h"
- #include "usb_pwr.h"
- #include "I2C.h"
- #include "mpu6050.h"
- #include "24l01.h"
-
-
- //計算x1,x2的絕對值
- u32 usb_abs(u32 x1,u32 x2)
- {
- if(x1>x2)return x1-x2;
- else return x2-x1;
- }
- //設置USB 連接/斷線
- //enable:0,斷開
- // 1,允許連接
- void usb_port_set(u8 enable)
- {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
- if(enable)_SetCNTR(_GetCNTR()&(~(1<<1)));//退出斷電模式
- else
- {
- _SetCNTR(_GetCNTR()|(1<<1)); // 斷電模式
- GPIOA->CRH&=0XFFF00FFF;
- GPIOA->CRH|=0X00033000;
- PAout(12)=0;
- }
- }
- int main(void)
- {
- // short temp1[3];//加速度計
- // short temp2[3];
- // short temp3; //溫度
- u8 tmp_buf[5]; //發射寄存器
- u8 key;
- short X,Y,X1,Y1; //發送到電腦端的坐標值
-
- u8 keysta; //[0]:0,左鍵松開;1,左鍵按下;
- //[1]:0,右鍵松開;1,右鍵按下
- //[2]:0,中鍵松開;1,中鍵按下
- delay_init(); //延時函數初始化
- NVIC_Configuration(); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
- uart_init(9600); //串口初始化為9600
- printf("串口初始化完畢\r\n");
- // LED_Init(); //LED端口初始化
- // KEY_Init(); //按鍵初始化
- // printf("按鍵初始化完畢\r\n");
- I2C_Init();
- printf("IIC初始化完畢\r\n");
- delay_ms(100);
- MPU6050_Init();
- printf("MPU6050初始化完畢\r\n");
- delay_ms(100);
- NRF24L01_Init();
- printf("24l01初始化完畢\r\n");
- while(NRF24L01_Check()) //檢查NRF24L01是否在位.
- {
- printf("未檢測到24l01\r\n");
- delay_ms(200);
- }
- printf("檢測到24l01---OK\r\n");
- NRF24L01_RX_Mode();
- printf("設置24l01為接收模式成功!\r\n");
-
- usb_port_set(0); //USB先斷開
- delay_ms(300);
- usb_port_set(1); //USB再次連接
- //USB配置
- USB_Interrupts_Config();
- Set_USBClock();
- USB_Init();
- printf("USB都初始化完畢了,騷年,開始接收吧!!\r\n");
- while(1)
- {
- if(NRF24L01_RxPacket(tmp_buf)==0)
- {
- X=(s16)((tmp_buf[1]<<8)|tmp_buf[2]);
- Y=(s16)((tmp_buf[3]<<8)|tmp_buf[4]);
- printf(" %8d%8d\r\n",X,Y);
- Joystick_Send(tmp_buf[0],X,Y,0);
- }
- // X1=(s16)((tmp_buf[1]<<8)|tmp_buf[2]);
- // Y1=(s16)((tmp_buf[3]<<8)|tmp_buf[4]);
- //printf("%8d%8d%4X\r\n",tmp_buf[1],tmp_buf[2],NRF24L01_TxPacket(tmp_buf)); //NRF24l01發射函數
- // Joystick_Send(keysta,X/15,Y/15,0);//鼠標函數,按鍵,X軸坐標,Y軸坐標
- }
- }
-
復制代碼
所有資料51hei提供下載:
空中鼠標源程序.rar
(378.79 KB, 下載次數: 127)
2018-8-16 17:48 上傳
點擊文件名下載附件
無線鼠標源代碼 下載積分: 黑幣 -5
空中鼠標原理圖.rar
(230.52 KB, 下載次數: 91)
2018-8-16 12:40 上傳
點擊文件名下載附件
BOM 下載積分: 黑幣 -5
|