pwm动态调频和输入捕捉配合使用的问题

2019-07-21 06:25发布

在原子的例程基础上,修改程序如下,能够实现42步进电机的动态调频,而且能把输出的脉冲数显示在usart hmi串口屏上:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "timer.h"
#include "usart.h"
//ALIENTEK Mini STM32开发板范例代码8
//PWM输出实验   
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司

extern u8  TIM2CH1_CAPTURE_STA;                //输入捕获状态                                                   
extern u16        TIM2CH1_CAPTURE_VAL;        //输入捕获值

int main(void)
{       
         int temp=0;
        u16 led0pwmval=0;   
        u8 dir=1;       
         u16 arr=8999;
        delay_init();                     //延时函数初始化          
        LED_Init();                          //初始化与LED连接的硬件接口
        TIM1_PWM_Init(8999,0);//不分频。PWM频率=72000/(899+1)=80Khz          
        TIM2_Cap_Init(0XFFFF,72-1);                //以1Mhz的频率计数  
        uart_init(115200);                                 //9600
         LED1=0;
           while(1)
        {
               
                TIM1->ARR=arr;
                arr=arr+10;
                if(arr>=9999)arr=8999;
                delay_ms(10);         
                TIM_SetCompare1(TIM1,(arr+1)/2);       
                if(dir)led0pwmval++;
                else led0pwmval--;         
                if(led0pwmval>300)dir=0;
                if(led0pwmval==0)dir=1;       
                if(TIM2CH1_CAPTURE_STA&0X80)//成功捕获到了一次高电平
                {
                        temp=temp+1;                //得到总的高电平时间
                        printf("n1.val=%dxffxffxff",temp);
                        TIM2CH1_CAPTURE_STA=0;                        //开启下一次捕获
                }
if(temp==1000)
{
        LED1=!LED1;
temp=0;
}       
        }
}

问题是程序中红 {MOD}字体部分,似乎跟功能毫无关系,为什么删去之后,程序就不能正常工作?我实在想不明白,请大神解释下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。