郑州网站设计哪家公司好,怎么登录别人的wordpress,中国建筑业网,二手房公司如何做网站按照流程进行编程 步骤1#xff1a;
初始化函数
包括时基工作参数配置 输入通道配置 更新中断使能 使能捕获、捕获中断及计数器
HAL_TIM_IC_Init(ic_handle) //时基参数配置
HAL_TIM_IC_ConfigChannel(ic_handle,ic_config,TIM_CHANNEL_2) //输…按照流程进行编程 步骤1
初始化函数
包括时基工作参数配置 输入通道配置 更新中断使能 使能捕获、捕获中断及计数器
HAL_TIM_IC_Init(ic_handle) //时基参数配置
HAL_TIM_IC_ConfigChannel(ic_handle,ic_config,TIM_CHANNEL_2) //输入通道配置
包括ICPolarity ICSelection ICPrescaler ICFilter 四种参数的设置 极性初始设置检测下降沿还是上升沿 定时器直接来接到输入捕获通道映射 分频 滤波
__HAL_TIM_ENABLE_IT(ic_handle,TIM_IT_UPDATE); //更新中断使能 HAL_TIM_IC_Start_IT(ic_handle,TIM_CHANNEL_2); /使能捕获 捕获中断 及计数器 步骤2
msp初始化 包括 定时器时钟 GPIO NVIC
步骤3
中断服务函数,定时器2中断TIM2_IRQHandler(void) 要包含公共服务函数HAL_TIM_IRQHandler(ic_handle)
步骤4
回调函数 HAL_TIM_IC_CaptureCallback (TIM_HandleTypeDef *htim) 回调函数中 写你想要的代码
#include ic.h
#include stdint.h
#include stdio.hTIM_HandleTypeDef ic_handle{0};void ic_init(uint16_t arr,uint16_t psc)
{TIM_IC_InitTypeDef ic_config {0};ic_handle.Instance TIM2;ic_handle.Init.Period arr;ic_handle.Init.CounterMode TIM_COUNTERMODE_UP;ic_handle.Init.Prescaler psc;HAL_TIM_IC_Init(ic_handle); //时基工作参数配置ic_config.ICPolarity TIM_ICPOLARITY_FALLING; //选择极性 刚开始捕获的是下降沿 故选择下降沿的模式ic_config.ICSelection TIM_ICSELECTION_DIRECTTI; //定时器2被直接连接到相应的输入捕获通道ic_config.ICPrescaler TIM_ICPSC_DIV1; //默认不分频ic_config.ICFilter 0; //滤不滤波 不滤波设置为0HAL_TIM_IC_ConfigChannel(ic_handle,ic_config,TIM_CHANNEL_2); //输入通道的配置 捕获的边沿 映射 分频 滤波__HAL_TIM_ENABLE_IT(ic_handle,TIM_IT_UPDATE); //更新中断使能 第二个参数为更新中断的模式HAL_TIM_IC_Start_IT(ic_handle,TIM_CHANNEL_2); //使能捕获 捕获中断及计数器}void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)
{if(htim-Instance TIM2){//①定义初始化结构体GPIO_InitTypeDef gpio_initstruct;//打开时钟__HAL_RCC_GPIOA_CLK_ENABLE(); //打开GPIO的时钟__HAL_RCC_TIM2_CLK_ENABLE(); //打开定时器的时钟//调用GPIO初始化函数gpio_initstruct.Pin GPIO_PIN_1 ; //LED1、LED2对应的引脚gpio_initstruct.Pull GPIO_PULLUP; //上拉 gpio_initstruct.Mode GPIO_MODE_INPUT; //推挽复用输出gpio_initstruct.Speed GPIO_SPEED_FREQ_HIGH; //高速HAL_GPIO_Init(GPIOA,gpio_initstruct);HAL_NVIC_SetPriority(TIM2_IRQn, 2,2); //设置NVICHAL_NVIC_EnableIRQ(TIM2_IRQn); //设置NVIC }
}void TIM2_IRQHandler(void)
{HAL_TIM_IRQHandler(ic_handle);}
void HAL_TIM_IC_CaptureCallback (TIM_HandleTypeDef *htim)
{printf(捕获到下降沿\r\n);}
主函数
#include sys.h
#include delay.h
#include led.h
#include uart1.h
#include ic.hint main(void) {HAL_Init();stm32_clock_init(RCC_PLL_MUL9); // 设置时钟72MHzled_init();uart1_init(115200); // 初始化 UARTprintf(hello world!\r\n); // 通过 UART 输出 hello worldic_init(65536-1,72-1);while(1) {led1_on();led2_off();delay_ms(500);led1_toggle();led2_toggle();delay_ms(500);}
}
最终显示结果