TI论坛
直播中

杨洁磊

8年用户 180经验值
私信 关注
[问答]

请问怎么使用PWM模块的的Fault信号禁止六路PWM信号的输出?

怎么使用PWM模块的的Fault信号禁止六路PWM信号的输出???
uint16_t Fault;
int main(void)
[
     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
     SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
     GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_2);
      IntMasterEnable();
      IntEnable(INT_PWM0_FAULT);
      GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2,FALSE);
      Fault=GPIOPinRead(GPIO_PORTB_BASE, GPIO_PIN_2);
      while(Fault==1)
      [
         PWM0faultintHandler();
      ]
      for(;;) //infinite loop
      []
]
void
PWM0faultIntHandler(void)
[
     //清除错误中断
     PWMFaultIntClear(PWM0_BASE);
     PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT, false);
     PWMOutputState(PWM0_BASE, PWM_OUT_1_BIT, false);
     PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT, false);
     PWMOutputState(PWM0_BASE, PWM_OUT_3_BIT, false);
     PWMOutputState(PWM0_BASE, PWM_OUT_4_BIT, false);
     PWMOutputState(PWM0_BASE, PWM_OUT_5_BIT, false);
]
这样写为什么不可以呢?

     

回帖(14)

冯敬宇

2020-4-3 07:53:22
另外你现在出现的问题主要是什么,描述清楚。

举报

杨洁磊

2020-4-3 07:59:07
引用: guigui_7044 发表于 2020-4-3 11:00
另外你现在出现的问题主要是什么,描述清楚。

<blockquote class="quote"/>

就算改成用PD2引脚来读取PB2引脚的值还是不行
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2,GPIO_PIN_2);
Fault=GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_2);
现在的问题是Fault的值一直是0,没法进入PWM0faultIntHandler()中断处理函数
举报

冯敬宇

2020-4-3 08:16:01
引用: kkusfwe 发表于 2020-4-3 11:06
就算改成用PD2引脚来读取PB2引脚的值还是不行
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2,GPIO_PIN_2);
Fault=GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_2);

GPIO读,怎么能对GPIO进行写操作呢。
PB2信号是什么?

举报

杨洁磊

2020-4-3 08:25:02
想用PB2来模拟故障信号,PD2为PWM模块的Fault接收信号,将PB2与PD2短接。当PB2为高电平时PD2接收到一个故障信号而进入PWM0FaultIntHandler()中断处理函数,禁止六路PWM输出,起到故障保护的作用。
就是想实现这样的功能,请问该怎么在程序里面进行设置呢?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分