记录STM32调试

问题:加入红外初始化后,程序卡在红外初始化处

 

解决思路:

1、确认时钟是不是好的

2、把定时器分解调试(输入捕获、溢出分开一步一步弄)

已解决:定时器的溢出中断

注意:STM32Cube配置好后,需要人为地开启中断,然后需要重新定义回调弱函数

HAL_TIM_Base_Start_IT(&htim1);    //开启溢出中断

//重新定义回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == htim1.Instance)
	{
		if(flag == 0)
		{
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
			flag = 1;
		}else
		{
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
			flag = 0;
		}	
	}
}

 还要注意分频系数和溢出值,因为TIM1是16位的,分频系数和周期值都不能超过65536

 

函数嵌套的流程:

1、void MX_TIM1_Init(void);                      该函数包含HAL_TIM_Base_Init(&htim2);

2、void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle);  该函数被包含在HAL_TIM_Base_Init(&htim2)里;

3、void TIM1_UP_TIM10_IRQHandler(void);                该函数包含 HAL_TIM_IRQHandler(&htim1);

4、void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);     该函数被包含在HAL_TIM_IRQHandler(&htim1);里

5、用户在HAL_TIM_PeriodElapsedCallback里编写程序

 

3、把C++那部分程序弄清楚

 

 

以后要弄清楚的:

1、汇编语言

2、程序执行的过程

3、debug调试的一些步骤

4、DMA

5、STM32Cube的参数意义

 

1、STM32中的关键文件:

stm32f4xxhal_conf.h  这里是配置管脚、外设的一个头文件

 

2、注意在复制一些.c文件后,记得add到工程中

posted on 2019-09-06 14:27  辉哥54110  阅读(350)  评论(0)    收藏  举报