本帖最后由 lvben5d 于 2017-10-4 14:48 编辑
之前从FAE获得的GD32F130 移植ucosii 官网模版在我的板子上跑成功了,原因是Firw Lib 需要使用V2.0版,我从论坛和百度下到的V1.01版的固件股应该是存在某种问题导致ucosii跑起来晶振比较慢。
我现在使用GD32F105RBT6,FAE跟我说,这个IC 是要GD32F10X_CL 这个宏定义,坑爹啊,哈哈, 128MFLASH,按照STM32的命名规则应该是MD, 呵呵。 不过先按照官方FAE的说法做吧。 现在,我自己把之前已经OK的130工程中的库以及启动文件更换成了105的并且硬件仿真,发现了2个问题,
第1,我外部焊接的是8M晶振 晶振丝印明确标记着8MHZ 并且在另外1个项目用了这个晶振。(避免丝印是8M实际是其他)
/* define value of high speed crystal oscillator (HXTAL) in Hz */
#if !defined HXTAL_VALUE
#ifdef GD32F10X_CL
#define HXTAL_VALUE ((uint32_t)8000000) //这里我修改了8000 000
#else
#define HXTAL_VALUE ((uint32_t)8000000) /* !< from 4M to 16M *!< value of the external oscillator in Hz*/
#endif /* HXTAL_VALUE */
#endif /* high speed crystal oscillator value */
#define __SYSTEM_CLOCK_36M_PLL_HXTAL (uint32_t)(8000000) 打算倍频使用36MHZ, 观察结果 c = rcu_system_clock_source_get(); // 结果为8 时钟源选择是PLL EN后的 没错
c = rcu_clock_freq_get(CK_SYS); //这里读到的是 11520000
c = rcu_clock_freq_get(CK_AHB); //这里读到的是 11520000
最后得到的结果是晶振闪烁的灯 明显不对。
2. void MySysTickInitForUCosii()
{
u32 fcpu=4500000; //36M / 8分频
SysTick_Config(fcpu/100); //这个函数包括了配置系统时钟优先级、时钟源、使能中断,启用系统定时器。
}
在ucosii主任务里,我为了测试时间的快慢, OSTimeDlyHMSM(0,1,0,0); 也就是1分钟 进1次来观察时间,结果发现时间不对。 请问哪位用过GD32F105的兄弟 指点下迷津。
如果,我把
#define HXTAL_VALUE ((uint32_t)25000000) /*!< value of the external oscillator in Hz */
结果
c = rcu_clock_freq_get(CK_SYS); //这里读到的是 36000000
c = rcu_clock_freq_get(CK_AHB); //这里读到的是 36000000
|