用tim6做systick时钟源,芯片是407ZGTx,用的是正点原子的407核心板。本次的目的是想把测试的AES128数据打印出来,但是一直不能启动,停留在启动文件中,最后发现将时钟源改为systick后能够正常启动。
为此,开始了查错过程。
记得用freertos时,必须选用tim6,所以继续加载了freertos来实现,也许没有问题,发现还是不行。于是,对比了我之前用的h743的工程,发现it文件中tim6的中断函数没有自动生成,只在main中生成了tim6中断的回调函数,所以果断中断函数,可以启动了。
void TIM6_DAC_IRQHandler(void)
{
/* USER CODE BEGIN TIM6_DAC_IRQn 0 */
/* USER CODE END TIM6_DAC_IRQn 0 */
HAL_TIM_IRQHandler(&htim6);
/* USER CODE BEGIN TIM6_DAC_IRQn 1 */
/* USER CODE END TIM6_DAC_IRQn 1 */
}
/**
* @brief Period elapsed callback in non blocking mode
* @note This function is called when TIM6 interrupt took place, inside
* HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
* a global variable "uwTick" used as application time base.
* @param htim : TIM handle
* @retval None
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
/* USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 */
if (htim->Instance == TIM6) {
HAL_IncTick();
}
/* USER CODE BEGIN Callback 1 */
/* USER CODE END Callback 1 */
}
在使用ide的过程中,一直感觉这个软件不是很稳定,总会有一些不知道的坑。
老铁建议我多看ST的官方例程,为此,要多些功夫来做更多的例程和应用。
正点原子的HAL应用虽然例程很多,但是和IDE 或者MX 生成的HAL库应用差了很多。原子的例程也没有MX或者IDE的IOC文件,感觉像是用标准库那样直接干上去的,功力很深厚。