从超核库中加入串口模块时编译报错:
提示这是一个只读变量,不能写入。我跟踪到MKL25Z4.h里面发现,UART_Type结构体里面S1被定义为__I,
而__I的宏定义如下,就是用来定义一个只读的类型:
#define __I volatile const /*!< defines 'read only' permissions */
似乎这是两个地方起冲突了。原因在哪呢?
MKL25Z4.h这个文件是KEIL里自带的,不大可能会出错。但是
在参考手册上面显示,这个低5位其实是可以读写的,w1c的意思是写1清0。两个地方都没问题?
仔细看MKL25Z4.h里UART相关的部分,发现了另一个类似的结构体UART0_Type
看来问题出在这里,UART0是要跟其他的串口模块有区分开来。
下图是除UART0以外的其他串口模块S1这个寄存器的情况,全是只读的。
所以,编程的时候UART0与其他的模块要区分一下。OK,问题解决。
|