1.英文版Reference文档第51页的System clock selection部分 Status bits in the Clock control register (RCC_CR) indicate which clock(s) is (are) ready and which clock is currently used as system clock. RCC_CR不包含system clock使用的是哪个clock。这个是由RCC_CFGR中的SWS定义。
2.stm32f10x_rcc.c中的void RCC_DeInit(void)函数 /* FLITF and SRAM Clock ON */ RCC->AHBENR = 0x00000014; 这条语句应该是设置FLITF和SRAM时钟在Sleep模式下是否使能,注释容易引起理解错误
3.stm32f10x_rcc.c中的ErrorStatus RCC_WaitForHSEStartU(void)函数 用到的2个变量HSEStatus和StartUpCounter,为何要加上volatile属性,并没有其他地方引用这2个变量。 第二次调用RCC_WaitForHSEStartUp时,StartUpCounter不为0,延时时间长度不对。 为何不这样写: u32 StartUpCounter = 0; /* Wait till HSE is ready and if Time out is reached exit */ while((RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET) && (++StartUpCounter < HSEStartUp_TimeOut));
4.GCC下发现strcmp函数有问题(可能string.h里的其他函数也有问题),自己重写了之后解决。IAR下是否也有这个问题,还是有什么需要注意的?
5.STM32 Library中的例子里,使用了自定义的Buffercmp函数,而不是libc中的memcmp函数,是什么原因? 我自己的应用测试确实发现使用了string.h中的函数的话,程序会出问题,请问什么原因?
6.usb_endp.c文件中: void EP3_OUT_Callback(void)上面的注释里缺是"* Function Name : EP3_IN_Callback"
7.输给那个写示例程序的人了 Virtual_COM示例中的usb_endp.c文件中的2个定义: u32 count_out = 0; u32 count_in = 0; 这2个变量会在EPX_XXX_Callback中修改,却不加volatile。 当然,对于他这个简单的应用可能没问题,但如果要通过这2个变量加上USB接口的流量控制的话,没有volatile则无法实现。
8.System boot mode specification.pdf中有些地方于实际测试的不符
9.ST提供的Flash Loader在Upload程序时,某些情况下会出问题 我测试到的情况: Flash内容为: 0x08000000 -- 0x08003000中为程序 0x08003000 -- 0x08004000中为空 0x08004000 -- 0x08007000中为数据 当Upload所有Flash到一个bin文件时,程序和数据是连在一起的。
10.stm32boot.exe下载程序时,-e选项在特定条件下出错 条件:设置了-a参数 比如:stm32boot -e -a 0x08004000 xxx.bin 如果xxx.bin只占用一个Flash页,也就是说小于1K,那么以上命令应该删除Flash的第16页,而实际仍旧删除第0页。 改问题已经mail作者
由于是新手,所以问题多了一些,下面是我自己初步学习STM32的结果,有待测试更多的功能模块: http://group.**/619/9458.aspx |