|
本帖最后由 yueming 于 2019-6-18 16:58 编辑
硬件部分已经调试完毕,示波器也可以显示出来,因为这个STM8L001 的芯片引脚很少,资源有限,对Manchester的捕获,只能通过基本定时器和外部中断方式,
来捕获高低电平,关于定时器有一个问题,我的外部中断是这样写的,定时器是这样配置的
void EXTI_Config(void)
{
GPIO_DeInit(GPIOA);
GPIO_Init(GPIOA,GPIO_Pin_2,GPIO_Mode_In_PU_IT);
EXTI_DeInit();
EXTI_SetPinSensitivity(EXTI_Pin_2,EXTI_Trigger_Rising_Falling);
TIM2_Config();
}
void TIM2_Config()
{
CLK_MasterPrescalerConfig(CLK_MasterPrescaler_HSIDiv1);
TIM2_DeInit();
/* Enable TIM2 clock */
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
TIM2_TimeBaseInit(TIM2_Prescaler_64, TIM2_CounterMode_Up, 255);//定时单位4us
TIM2_ARRPreloadConfig(ENABLE);
TIM2_Cmd(ENABLE);
}
当触发了上升沿或者下降沿的时候就会进入到外部中断服务函数中,
INTERRUPT_HANDLER(EXTI2_IRQHandler, 10)
{
unsigned short time;
time= TIM2_GetCounter();
unsigned char ucTemp;
TIM2_SetCounter(0);
}
这样写对吗? 我的目的是为了测出位数据时间,高或者低电平,我的疑惑是 当边沿触发中断,进入到中断服务函数中的时候,此时读的值就是 高电平或者低电平的值吗,我用串口打印这个时间数据不对。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|