新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2019-9-22
- 在线时间
- 14 小时
|

楼主 |
发表于 2019-12-21 21:14:22
|
显示全部楼层
本帖最后由 YANGSCAU 于 2019-12-22 12:11 编辑
htao 发表于 2019-12-21 18:54
我发的工程里面这个路径,F103激光雷达\HARDWARE\EXTI 有个外部中断的c文件和 头文件,添加进去修改成要 ... u64 time1=0; //推杆1伸出总时间 u64 time11=0; //推杆1每一次伸出的时间 u64 time1_start=0; //pwm3为高电平时的系统运行时间 u64 time1_over=0; //pwm3为低电平时的系统运行时间 u64 time2=0; u64 time22=0; u64 time2_start=0; u64 time2_over=0;
- void EXTIX_Init(void)
- {
-
- EXTI_InitTypeDef EXTI_InitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- pwm4_init();
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟
- //GPIOB.8 pwm3 中断线以及中断初始化配置 上升沿下降沿都触发
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource8);
- EXTI_InitStructure.EXTI_Line=EXTI_Line8;
- EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
- EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
- EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
- //GPIOB.9 pwm4 中断线以及中断初始化配置 上升沿下降沿触发
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9);
- EXTI_InitStructure.EXTI_Line=EXTI_Line9;
- EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
- EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
- EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
- NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //使能所在的外部中断通道
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级2,
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级2
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道
- NVIC_Init(&NVIC_InitStructure);
- }
复制代码- void EXTI9_5_IRQHandler(void) //外部中断服务函数
- {
- //高电平即为上升沿时纪录运行时间
- if(pwm3 == 1)
- {
- time1_start=Get_system_time();
- }
- //低电平即为下降沿时纪录运行时间并获得整体高电平时间
- if(pwm3 == 0)
- {
- time1_over=Get_system_time();
- time11=time1_over-time1_start;
- time1 = time1 + time11; //总的高电平时间
- }
-
- //高电平即为上升沿时纪录运行时间
- if(pwm4 == 1)
- {
- time2_start=Get_system_time();
- }
- //低电平即为下降沿时纪录运行时间并获得整体高电平时间
- if(pwm4 == 0)
- {
- time2_over=Get_system_time();
- time22=time2_over-time2_start;
- time2 = time2 + time22; //总的高电平时间
- }
-
- EXTI_ClearITPendingBit(EXTI_Line8);
- EXTI_ClearITPendingBit(EXTI_Line9);
- }
复制代码
|
|