(24.06.21,目前软件包版本:STM32Cube_FW_H7RS_V1.0.0)
最近买了一块ST的nucleo H7S3L8H6的板子,到手之后跑了一个threadx的小程序,但发现tx_thread_sleep(1000) 这里我的每秒节拍数也是1000,但我发现真正运行起来 这个APP并不是1秒执行一次。而是接近10s。
一开始以为是cubeMX生成的threadx例程有问题,把每秒节拍数改成10000确实差不多是1秒了,但测出来1s不是很精准,我觉得不太对。
果然在测试PWM输出的时候 不正常。TIM1用的是APB2时钟 我配置预分频299, arr 为499,但是测出来的频率为427Hz
看了手册 发现H7S3的HSI时钟频率为64M,那么64M/300/500=427 ,就发现问题了,cubemx生成的例子居然没有配置RCC(即使我在cubemx里面选择了,也不会生成),仅仅是在HAL_init之前有一个 SystemCoreClockUpdate(); 。
因此,需要自己配置RCC,参考了官方RCC例程,但发现跑不起来会卡死在
HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE0)
再参考H743的项目之后加入
HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
就解决了!
完整代码如下
static void SystemClockHSE_Config(void)
{
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
R
3153




被折叠的 条评论
为什么被折叠?



