我使用Keil uvision5编译cmsis_os.c(我的FreeRTOS包装器)。
我得到这个错误: .. \ Middlewares \ Third_Party \ FreeRTOS \ Source \ portable \ GCC \ ARM_CM4F \ portmacro.h(221):错误:#18:预期a")"
portmacro.h有这个:
portFORCE_INLINE static void vPortRaiseBASEPRI( void )
{
uint32_t ulNewBASEPRI;
__asm volatile
(
" mov %0, %1 \n" \
" msr basepri, %0 \n" \
" isb \n" \
" dsb \n" \
:"=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) <<<<<<<<<<< LINE WITH THE ERROR.
);
}
ARM是STM32F417VG。 FreeRTOS源代码是V8.1.2
我们已经为ARM提供了基于gcc的源代码,我需要将其移植到Keil IDE上。 我用ST CubeMx生成了一个处女Keil项目。 然后,我添加了v8.1.2 FreeRTOS源代码,包括cmsis_os.c和cmsis_os.h,因为Keil需要cmsis RTOS包装器用于调试器等。
答案 0 :(得分:0)
使用Keil,您应该使用static portFORCE_INLINE void vPortRaiseBASEPRI( void )
{
uint32_t ulNewBASEPRI = configMAX_SYSCALL_INTERRUPT_PRIORITY;
__asm
{
msr basepri, ulNewBASEPRI
dsb
isb
}
}
Keil语法中的这个函数看起来像
{{1}}