wiikong 发表于 2018-3-25 11:00:05

stm32cubemx生成的代码编译错误,求指教

本帖最后由 wiikong 于 2018-3-26 22:28 编辑

mcu设置为stm32f407ve,   勾选freertos后,生成的代码编译产生错误。错误信息为:

..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c(483): error: A1586E: Bad operand types (UnDefOT, Constant) for operator (


第一次使用f407,之前多次使用f103;并未见过此错误。
对cube的使用不太熟悉。
请问这个是什么原因??
感谢回复,不胜感激!

补充:附上工程文件。

wiikong 发表于 2018-3-25 11:22:16

百度有人回复要这么修改,但不知道为何;
而且这样修改一次后,若cube再次生成,又要再一次人为修改。
百度信息:
找这个定义 configMAX_SYSCALL_INTERRUPT_PRIORITY
再找 configPRIO_BITS
再找 __NVIC_PRIO_BITS
发现定为4U , 去掉U改成4就可以了

toofree 发表于 2018-3-26 01:20:39

这么诡异!常数一般定义的话 4UL、4U,都用过,应该没有问题。
可以发个工程上来吗,看看情况。

bargagebaobei 发表于 2018-3-26 09:29:19

问题应该归结于__NVIC_PRIO_BITS的定义。在main.h文件的/* USER CODE BEGIN Private defines */位置添加如下代码即可解决此问题。

/* USER CODE BEGIN Private defines */
#if 0
#ifdef __NVIC_PRIO_BITS
#undef __NVIC_PRIO_BITS
#define __NVIC_PRIO_BITS      4
#endif
#endif
/* USER CODE END Private defines */

wiikong 发表于 2018-3-26 22:29:48

toofree 发表于 2018-3-26 01:20
这么诡异!常数一般定义的话 4UL、4U,都用过,应该没有问题。
可以发个工程上来吗,看看情况。 ...

已经上传工程,有兴趣可以了解一下,
cube软件都是最新版本的。
就勾选了FreeRTOS,还有其它外设功能,就是编辑有问题。
如果只勾选FreeRTOS,不使能外设,是没问题的。

toofree 发表于 2018-3-26 23:56:39


MOV Rd, #imm16,这条汇编指令是立即数寻址,只能是0到65535之前的数,尾部不能加任何修饰。



页: [1]
查看完整版本: stm32cubemx生成的代码编译错误,求指教