找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

mini54fde PWM brake 中断

[复制链接]
跳转到指定楼层
楼主
ccw2kcn 发表于 2014-5-20 18:12:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用mini51fde 的PWM功能,其中要用EINT0 作为 brake的中断。使用如下设置:
PWM初始化:
static void PWM_Init(void)
{
    //使能 PWM23 时钟         
    APBCLK |=  PWM23_CLKEN;         
    CLKSEL1 = CLKSEL1 & (~( PWM23_CLK)) | (PWM23_HCLK);
    //PWM23的输入时钟预分频器
PPR = (1<<8);
//PWM23的输入时钟                       
CSR = CSR2_CLK_1;  
//死区时间 about 1.8us      
PDZIR = (20<<8);  
//使能PWM01死区功能                        
    PCR |= ( DZEN23);  
    //边沿对齐               
PCR &= EDGE_ALIGN;                        
//中心对齐
//PCR |= CENTRE_ALIGN;   
//连续&互补模式,输出不反相                    
    PCR = PCR & (~PWMMODE) | COMPLEMENTARY;      
    PCR |= (CH2_AU_RL | CH3_AU_RL );            
    PIER |= PWMPIE2;        //PWM中断类型为PWM2周期中断
    NVIC_ISER = PWM_INT;        //使能NVIC PWM_INT中断         
  //使能输出
    PWMPOE |= (PWM2_OE | PWM3_OE);                                 
    PCR |= CLRPWM;              //清零PWM计数器   
    PCR |= (CH2EN | CH3EN ); //使能PWM                                                   
   
//故障刹车输出低电平      
PFBCON |= (BKF |BKEN0);
    PIER |= BRKIE;       //PWM中断类型为Brake中断   
NVIC_ISER = BRAKE_INT;      //使能NVIC Brake中断   
}
设置EINT0中断
static void EINT0_Init(void)
{
//配置P32为 INT
    P3_MFP = P3_MFP & (~P32_MFSEL) | P32_INT0;           //配置P3.2为外中断输入   
    P3_PMD = P3_PMD & (~Px2_PMD) | Px2_QB;               //配置P3.2为准双向模式
    //<2> 设置IO3.2的中断模式,请根据实际情况修改
    P3_IMD &= IMD2_EDG;    //边沿触发
    P3_IEN |= IF_EN2;          //由H->L时触发
    //P3_IMD |= IMD2_LEV;    //电平触发
    //P3_IEN |= IF_EN2;         //变成低电平时触发
    P3_DBEN |= DBEN2;           //使能P3.2引脚去抖功能
   // NVIC_ISER =INT0;      //去除,使用Breake中断.
}
brake 刹车中断
void BRAKE_IRQHandler(void)
{
   
PIIR =PIIR;
}
调试时,P32的下降沿可以引起Brake中断。但是中断标志清除不了。一直在中断。
怎么样才能清除brake的中断标志呢?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU