STM32的PWM输入模式设置并用DMA接收数据
本文博客链接:http://blog.youkuaiyun.com/jdh99,作者:jdh,转载请注明.
环境:
主机:WIN7
开发环境:MDK4.72
MCU:STM32F103
说明:
项目中需要进行红外学习,如果采用输入捕获的方式,因为定时器只能捕获上升沿或者下降沿,所以只能获得周期,而不能得到具体的红外波的高低电平的时间.所以采用PWM输入的方式进行捕获.
采用的是PA8脚,对应TIM1的通道1.
源代码:
/********************************************************************** 函数**********************************************************************//********************************************************************** 接口函数:初始化红外学习模块**********************************************************************/void inf_infrared_study_init(void){ //初始化io口 inf_init_io(); //初始化中断 //inf_init_irq(); //初始化定时器 inf_init_timer(); //打开DMA inf_infrared_study_open_dma(1); //打开定时器 inf_infrared_study_open_timer(1);}/********************************************************************** 初始化io口**********************************************************************/static void inf_init_io(void){ //定义IO初始化结构体 GPIO_InitTypeDef GPIO_InitStructure; //初始化时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //管脚初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //设置为输入 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //初始化 GPIO_Init(GPIOA, &GPIO_InitStructure); }/*****************************