是在正点原子的阿波罗STM32F429开发板上的例子改来的,他们的编译没有问题,我编译时出现如下问题:
定位到出错的地方,代码是:
再追代码,configMAX_SYSCALL_INTERRUPT_PRIORITY 的定义是:
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
其中 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 定义为:
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 //系统可管理的最高中断优先级
configPRIO_BITS 定义为:
#ifdef __NVIC_PRIO_BITS
#define configPRIO_BITS __NVIC_PRIO_BITS
#else
#define configPRIO_BITS 4
#endif
我们定义了__NVIC_PRIO_BITS 为:
#define __NVIC_PRIO_BITS 4U /*!< STM32F4XX uses 4 Bits for the Priority Levels */
就是因为这里的定义后面有一个U,导致编译不过。
后来跟踪429的代码发现 __NVIC_PRIO_BITS 的定义为:
而427的代码为:
一句话,就是多了一个U导致编译不过。