支持引脚导致,编译通过,测试未通过
This commit is contained in:
parent
cb888f2e82
commit
04c778960e
|
@ -195,11 +195,11 @@ void AutoOpenTask(void* param);
|
|||
|
||||
NRF24L01::NRF24L01() { Init(); }
|
||||
|
||||
NRF24L01::NRF24L01(Spi* spi, Pin ce, Pin irq)
|
||||
/*NRF24L01::NRF24L01(Spi* spi, Pin ce, Pin irq)
|
||||
{
|
||||
Init();
|
||||
Init(spi, ce, irq);
|
||||
}
|
||||
}*/
|
||||
|
||||
void NRF24L01::Init()
|
||||
{
|
||||
|
@ -233,12 +233,12 @@ void NRF24L01::Init()
|
|||
LedRx = NULL;
|
||||
}
|
||||
|
||||
void NRF24L01::Init(Spi* spi, Pin ce, Pin irq)
|
||||
void NRF24L01::Init(Spi* spi, Pin ce, Pin irq, Pin power)
|
||||
{
|
||||
if(irq != P0)
|
||||
debug_printf("NRF24L01::Init CE=P%c%d IRQ=P%c%d\r\n", _PIN_NAME(ce), _PIN_NAME(irq));
|
||||
else
|
||||
debug_printf("NRF24L01::Init CE=P%c%d IRQ=P0\r\n", _PIN_NAME(ce));
|
||||
//if(irq != P0)
|
||||
debug_printf("NRF24L01::Init CE=P%c%d IRQ=P%c%d POWER=P%c%d\r\n", _PIN_NAME(ce), _PIN_NAME(irq), _PIN_NAME(power));
|
||||
//else
|
||||
// debug_printf("NRF24L01::Init CE=P%c%d IRQ=P0\r\n", _PIN_NAME(ce));
|
||||
|
||||
if(ce != P0)
|
||||
{
|
||||
|
@ -257,6 +257,12 @@ void NRF24L01::Init(Spi* spi, Pin ce, Pin irq)
|
|||
_IRQ.Set(irq).Config();
|
||||
_IRQ.Register(OnIRQ, this);
|
||||
}
|
||||
if(power != P0)
|
||||
{
|
||||
Power.Set(power).Config();
|
||||
debug_printf("打开物理电源开关\r\n");
|
||||
}
|
||||
|
||||
// 必须先赋值,后面WriteReg需要用到
|
||||
_spi = spi;
|
||||
|
||||
|
@ -294,9 +300,6 @@ NRF24L01::~NRF24L01()
|
|||
delete _spi;
|
||||
_spi = NULL;
|
||||
|
||||
delete Power;
|
||||
Power = NULL;
|
||||
|
||||
delete LedTx;
|
||||
LedTx = NULL;
|
||||
|
||||
|
@ -362,6 +365,11 @@ byte NRF24L01::WriteReg(byte reg, byte dat)
|
|||
// 主要用于NRF与MCU是否正常连接
|
||||
bool NRF24L01::Check(void)
|
||||
{
|
||||
if(!Power.Read())
|
||||
{
|
||||
Power = true;
|
||||
debug_printf("打开物理电源开关\r\n");
|
||||
}
|
||||
// 检查并打开Spi
|
||||
_spi->Open();
|
||||
|
||||
|
@ -790,14 +798,6 @@ void AutoOpenTask(void* param)
|
|||
|
||||
bool NRF24L01::OnOpen()
|
||||
{
|
||||
if(Power && !*Power)
|
||||
{
|
||||
*Power = true;
|
||||
debug_printf("打开物理电源开关\r\n");
|
||||
}
|
||||
// 检查并打开Spi
|
||||
_spi->Open();
|
||||
|
||||
Error = 0;
|
||||
|
||||
// 配置完成以后,无需再次检查
|
||||
|
@ -837,9 +837,9 @@ void NRF24L01::OnClose()
|
|||
SetPower(false);
|
||||
|
||||
_spi->Close();
|
||||
if(Power)
|
||||
if(Power.Read())
|
||||
{
|
||||
*Power = false;
|
||||
Power = false;
|
||||
debug_printf("关闭物理电源开关\r\n");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ private:
|
|||
Spi* _spi;
|
||||
OutputPort _CE;
|
||||
InputPort _IRQ;
|
||||
OutputPort Power; // 设置控制2401电源的引脚 直接进行对2401的通断电操作,以免死机对setPower无效
|
||||
|
||||
byte WriteBuf(byte reg, const byte *pBuf, byte bytes);
|
||||
byte ReadBuf(byte reg, byte *pBuf, byte bytes);
|
||||
|
@ -53,13 +54,12 @@ public:
|
|||
ushort Error; // 错误次数,超过最大错误次数则自动重置
|
||||
|
||||
NRF24L01();
|
||||
NRF24L01(Spi* spi, Pin ce = P0, Pin irq = P0);
|
||||
//NRF24L01(Spi* spi, Pin ce = P0, Pin irq = P0, Pin power = P0);
|
||||
virtual ~NRF24L01();
|
||||
void Init(Spi* spi, Pin ce = P0, Pin irq = P0);
|
||||
void Init(Spi* spi, Pin ce = P0, Pin irq = P0, Pin power = P0);
|
||||
|
||||
bool Check();
|
||||
bool Config(); // 完成基础参数设定,默认初始化为发送模式
|
||||
OutputPort* Power; // 设置控制2401电源的引脚 直接进行对2401的通断电操作,以免死机对setPower无效
|
||||
bool GetPower(); // 获取当前电源状态
|
||||
bool SetPower(bool on); // 设置当前电源状态。返回是否成功
|
||||
bool GetMode(); // 获取当前模式是否接收模式
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef _PIN_H_
|
||||
#define _PIN_H_
|
||||
|
||||
|
||||
/* 针脚 ------------------------------------------------------------------*/
|
||||
enum Pin
|
||||
{
|
||||
|
@ -132,7 +132,9 @@ enum Pin
|
|||
PH12 = 0x7C,
|
||||
PH13 = 0x7D,
|
||||
PH14 = 0x7E,
|
||||
PH15 = 0x7F
|
||||
PH15 = 0x7F,
|
||||
|
||||
PinInvert = 0x80
|
||||
};
|
||||
|
||||
#if defined(STM32F4)
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#define _GROUP(PIN) ((GPIO_TypeDef *) (GPIOA_BASE + (((PIN) & (uint16_t)0xF0) << 6)))
|
||||
#define _PORT(PIN) (1 << ((PIN) & (uint16_t)0x0F))
|
||||
#define _PIN(PIN) (PIN & 0x000F)
|
||||
#define _PIN_NAME(pin) ('A' + (pin >> 4)), (pin & 0x0F)
|
||||
#define _PIN_NAME(pin) ('A' + ((pin & 0x7F) >> 4)), (pin & 0x0F)
|
||||
|
||||
/* 通用同步/异步收发器(USART)针脚 ------------------------------------------------------------------*/
|
||||
/*STM32F030C8T6串口针脚*/
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#define _GROUP(PIN) ((GPIO_TypeDef *) (GPIOA_BASE + (((PIN) & (uint16_t)0xF0) << 6)))
|
||||
#define _PORT(PIN) (1 << ((PIN) & (uint16_t)0x0F))
|
||||
#define _PIN(PIN) (PIN & 0x000F)
|
||||
#define _PIN_NAME(pin) ('A' + (pin >> 4)), (pin & 0x0F)
|
||||
#define _PIN_NAME(pin) ('A' + ((pin & 0x7F) >> 4)), (pin & 0x0F)
|
||||
|
||||
#ifdef STM32F10X_HD
|
||||
/* 通用同步/异步收发器(USART)针脚 ------------------------------------------------------------------*/
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#define _GROUP(PIN) ((GPIO_TypeDef *) (GPIOA_BASE + (((PIN) & (uint16_t)0xF0) << 6)))
|
||||
#define _PORT(PIN) (1 << ((PIN) & (uint16_t)0x0F))
|
||||
#define _PIN(PIN) (PIN & 0x000F)
|
||||
#define _PIN_NAME(pin) ('A' + (pin >> 4)), (pin & 0x0F)
|
||||
#define _PIN_NAME(pin) ('A' + ((pin & 0x7F) >> 4)), (pin & 0x0F)
|
||||
|
||||
/* 通用同步/异步收发器(USART)针脚 ------------------------------------------------------------------*/
|
||||
#ifdef STM32F427X
|
||||
|
|
13
Port.cpp
13
Port.cpp
|
@ -33,6 +33,7 @@ Port::~Port()
|
|||
// 单一引脚初始化
|
||||
Port& Port::Set(Pin pin)
|
||||
{
|
||||
pin = (Pin)(pin & 0x7F);
|
||||
// 如果引脚不变,则不做处理
|
||||
if(pin == _Pin) return *this;
|
||||
|
||||
|
@ -56,6 +57,18 @@ Port& Port::Set(Pin pin)
|
|||
return *this;
|
||||
}
|
||||
|
||||
Port& OutputPort::Set(Pin pin)
|
||||
{
|
||||
Invert = (pin & 0x80) != 0;
|
||||
return Port::Set(pin);
|
||||
}
|
||||
|
||||
Port& InputPort::Set(Pin pin)
|
||||
{
|
||||
Invert = (pin & 0x80) != 0;
|
||||
return Port::Set(pin);
|
||||
}
|
||||
|
||||
bool Port::Empty() const
|
||||
{
|
||||
if(_Pin != P0) return false;
|
||||
|
|
4
Port.h
4
Port.h
|
@ -19,7 +19,7 @@ public:
|
|||
Pin _Pin; // 针脚
|
||||
ushort PinBit; // 组内引脚位。每个引脚一个位
|
||||
|
||||
Port& Set(Pin pin); // 设置引脚
|
||||
virtual Port& Set(Pin pin); // 设置引脚
|
||||
bool Empty() const;
|
||||
|
||||
// 确定配置,确认用对象内部的参数进行初始化
|
||||
|
@ -63,6 +63,7 @@ public:
|
|||
Config();
|
||||
}
|
||||
|
||||
virtual Port& Set(Pin pin); // 设置引脚
|
||||
// 整体写入所有包含的引脚
|
||||
void Write(bool value);
|
||||
void WriteGroup(ushort value); // 整组写入
|
||||
|
@ -140,6 +141,7 @@ public:
|
|||
|
||||
virtual ~InputPort();
|
||||
|
||||
virtual Port& Set(Pin pin); // 设置引脚
|
||||
ushort ReadGroup(); // 整组读取
|
||||
bool Read(); // 读取状态
|
||||
static bool Read(Pin pin); // 读取某个引脚
|
||||
|
|
Loading…
Reference in New Issue