使用STM32F103ZET6,代码如下
int main(void)
{
int getdr;
RCC_AHBPeriphClockCmd( RCC_AHBPeriph_CRC , ENABLE);
CRC->CR = 1;
CRC->DR = 0x0;
getdr = CRC->DR;
while (1){}
}
包括打开CRC时钟,reset crc,写入0,读取计算结果。
debug下单步执行,结果正确,一次执行到while循环,结果错误,读出0xFFFFFFFF。以下皆为一次执行到while的结果:
写入数据为0,结果错误,写入其他数据,有时正常,例如写入0x12345678,有时不正常,例如写入0xFFFFFFFF或写入0x3时,结果为0xFFFFFFFF
去掉CRC->CR = 1,结果全部正常。
这些是否说明CRC的reset时序和写入数据的时序在部分情况下会产生冲突,使得数据的写入不能正确进行。
这算是stm32中crc模块硬件设计上的bug吗?
此帖出自
小平头技术问答
一周热门 更多>