
我打算用TIM9测量波形的脉宽长度,但是读取的置始终为0,请各位大牛帮我看看原因: 初始化: void TIM9Capture1Init() { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; TIM_ICInitTypeDef TIM_ICInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM9,ENABLE); //ENABLE TIM9 of RCC RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); //enable GPIOE of RCC GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_Init(GPIOE,&GPIO_InitStructure); GPIO_PinAFConfig(GPIOE,GPIO_PinSource5,GPIO_AF_TIM9); TIM_TimeBaseStructure.TIM_Prescaler=0xFFFF; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period=20;//4Mh TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM9,&TIM_TimeBaseStructure); TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInit(TIM9, &TIM_ICInitStructure); NVIC_InitStructure.NVIC_IRQChannel = TIM1_BRK_TIM9_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); TIM_ITConfig(TIM9,TIM_IT_Update|TIM_IT_CC1,ENABLE); TIM_Cmd(TIM9,ENABLE); TIM_SetCounter(TIM9,0); } 中断服务函数: void TIM1_BRK_TIM9_IRQHandler(void) { static uint8_t test=0; uint8_t tdat; if(TIM_GetITStatus(TIM9, TIM_IT_Update) != RESET)//超时处理 { TIM_SetCounter(TIM9,0); TIM_ClearITPendingBit(TIM9,TIM_IT_Update); } if(TIM_GetITStatus(TIM9, TIM_IT_CC1) != RESET) { if(test%2==0) IO0_SET();//IO口翻转测试,该处波形与输入波形一致,周期约24us else IO0_CLR(); test++; tdat=TIM_GetCapture1(TIM9); my.buf[my.wpos++] = tdat; TIM_SetCounter(TIM9,0); //重新计算超时 TIM_ClearITPendingBit(TIM9, TIM_IT_CC1); } } |
盘古UE-STM32F407工控板原理图
STM32F407 定时器触发DMA 求助大神
【MCU实战经验】基于STM32F407的音频播放器设计
【STM32F429心得\疑问】+STM32F4之FSMC和FMC
STM32F429读取IO口传输的数据速率
STM32F407ZGT6 手摸芯片背部重启
STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控
STM32F401RE NUCLEO求助,串口一直不能进中断
读取STM32F407内部温度传感器值错误
STM32F429多路内部ADC独立采集的办法
捕捉应该用到的,官方例程很多,可以参考。
InputCapture.rar
2016-11-15 09:42 上传
点击文件名下载附件
下载积分: ST金币 -112.46 KB, 下载次数: 16, 下载积分: ST金币 -1
评分
查看全部评分
评分
查看全部评分
OCx不是输出控制吗?我这是输入捕获啊
谢谢,但是我用的TIM9还是一样,捕获的全是0