1.在这款lora 连接中,没有使用DIO4和DIO5 ,于是将其引脚定义为NC。

#define RADIO_DIO_4                                 NC
#define RADIO_DIO_5                                 NC

2.枚举中定义中将NC定义为最大值。 这里就出现了一个问题,32位的int最大值是0x7FFFFFFF 而不是 0xFFFFFFFFF(-1) 。这个就直接导致在后面进行比较的时候,定义为NC 的引脚也会验证通过。

typedef enum
{
    MCU_PINS,
    IOE_PINS,
	IOE_1,

    // Not connected
    NC = (int)0x7FFFFFFF   //这个最大值是正确的。
}PinNames;

3.需要先复制,后比较。不然整个值就不能被保存下来。

void GpioMcuInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinTypes type, uint32_t value )
{
     obj->pin = pin; //要先赋值,不然后面使用时,会当做未初始化的0来使用。
    if( pin < IOE_0 )
    {
        GPIO_InitTypeDef GPIO_InitStructure;

        obj->pin = pin;

        if( pin == NC )
        {
            return;
        }
void GpioMcuSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriority, GpioIrqHandler *irqHandler )
{

    if( obj->pin < IOE_0 ) //如果上面没有保存,那么这里的obj->pin就会是0,而不是NC,就会出错。
    {
        uint32_t priority = 0;

4.枚举变量还需要注意这个问题
keil 里面的枚举变量被装换为uint8_t

原文地址:http://www.cnblogs.com/Spin-jump/p/16816737.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性