标题:
基于NRF2401无线通信模块下的无线鼠标设计 含STM32源码与原理图
[打印本页]
作者:
caiyilong
时间:
2018-8-16 12:43
标题:
基于NRF2401无线通信模块下的无线鼠标设计 含STM32源码与原理图
基于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
作者:
chonggege
时间:
2018-10-5 15:25
新手,想下载学习,可惜没有黑币。
作者:
tekoken
时间:
2019-2-28 23:44
大佬,请问有发射端的代码吗
作者:
541611503
时间:
2019-5-19 16:21
请问有发射端的代码吗
作者:
liwei120312
时间:
2020-5-19 22:42
多谢了 讲解的非常到位
作者:
blueskyl
时间:
2020-12-7 08:27
非常谢谢,学习一下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1