由于这几天有时间鼓捣了一下申请的NUCLEO_G431RB开发板。发现了一些问题。
感谢EEWORLD和ST公司提供开发板。
首先介绍一下开发环境,STM32CUBEMAX 5.40板,keil 5.27 IDE。
1、打开外部晶振
2、设置系统时钟
可以看到外设的频率,APB1和APB2都是168M。应该没有问题了
3、设置定时器TIM6
计时分频为1M,PreScaler =168 - 1,定时器计数为1000, counter Period =1000
中断打开,自动重装。那么计时中断为1m一次。
4、在主程序中打开中断
HAL_TIM_Base_Init(&htim6);
HAL_TIM_Base_Start_IT(&htim6);
5、修改中断函数TIM6_DAC_IRQHandler
加入计时变量 sysclk++;
那么在循环中检测sysclk的值,sysclk > 500 ,翻转LED极性
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
操作到此完成,编译->下载->reset。开始测试。
发现LED非常的缓慢的亮起。大概也就是100ms计数一次的样子。于是使用函数
uint32_t sysclock = HAL_RCC_GetSysClockFreq();
输出系统频率后为SysClock=16000000。不对呀,查看设置为168M的时钟频率呀怎么不对了。打开设置代码也没有发现问题。所以怀疑STM32G431的HAL库代码有问题。
此外,在这之前还发现TIM7和TIM6的设置和代码一样。TIM7只要打开中断
HAL_TIM_Base_Start_IT(&htim7);
程序就死机了。也是不知道什么原因。我测试的问题,请ST公司能够重视一下。
此内容由EEWORLD论坛网友bigbat原创,如需转载或用于商业用途需征得作者同意并注明出处