This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
怎么使用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);
}
这样写为什么不可以呢?
另外你现在出现的问题主要是什么,描述清楚。
LiangLiang wang1 说:怎么使用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);PB2.0 作为输出,你怎么读取Fault值。
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);
}这样写为什么不可以呢?
就算改成用PD2引脚来读取PB2引脚的值还是不行
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2,GPIO_PIN_2);
Fault=GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_2);
现在的问题是Fault的值一直是0,没法进入PWM0faultIntHandler()中断处理函数
GPIO读,怎么能对GPIO进行写操作呢。
PB2信号是什么?
LiangLiang wang1 说:就算改成用PD2引脚来读取PB2引脚的值还是不行
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2,GPIO_PIN_2);
Fault=GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_2);现在的问题是Fault的值一直是0,没法进入PWM0faultIntHandler()中断处理函数
想用PB2来模拟故障信号,PD2为PWM模块的Fault接收信号,将PB2与PD2短接。当PB2为高电平时PD2接收到一个故障信号而进入PWM0FaultIntHandler()中断处理函数,禁止六路PWM输出,起到故障保护的作用。
就是想实现这样的功能,请问该怎么在程序里面进行设置呢?
如果把PD2配置为PWM0Fault0是不是经过下面三步就可以了?
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_2);
GPIOPinConfigure(GPIO_PD2_M0FAULT0);
然 后设置PWMOutputFaultLevel(PWM0_BASE, PWM_OUT_0_BIT|PWM_OUT_1_BIT|PWM_OUT_2_BITPWM_OUT_3_BIT|
PWM_OUT_4_BIT|PWM_OUT_5_BIT,false)
当PD2接受到高电平时,六路PWM就按指定电平输出,即PWM被锁死,是这样吗?
能不能麻烦您抽空写一个关于TM4C123GH6PM在KEIL环境下如何建立一个工程,搭一个完整的开发环境?(之前您那个帖子有点简单)
刚刚开始接触这个芯片,发现网上关于他的资料更是少之又少,甚至都没有一个详细的资料介绍他在keil环境下的开发,
为我们这样的初入门者带来极大的困扰,一种有着宝贝用不了的感觉;
这么好东西没有足够的入门带领,真是挺烦躁的,
再次请您考虑下小白的痛苦,拜谢!