TI论坛
直播中

任黎平

7年用户 185经验值
私信 关注
[问答]

为什么TM4C123G PF0管脚不能输出PWM?

int
PWMInit (void)
[
     //
     // PWM不分频
     //
     SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
     GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_2|GPIO_PIN_3);//配置2,3管脚为输出
     //配置PF0,PF1分别为M1PWM4,M1PWM5
     GPIOPinConfigure(GPIO_PF0_M1PWM4);
     GPIOPinConfigure(GPIO_PF1_M1PWM5);

     // 配置PF0,PF1为PWM的输出管脚
     GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_1);
     //
     // Configure the PWM1 to count down without synchronization.
     //配置GEN2递减计数模式不同步模式
     PWMGenConfigure(PWM1_BASE, PWM_GEN_2,
                     PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
     //设置PWM周期
     PWMGenPeriodSet(PWM1_BASE, PWM_GEN_2,100);
     //设置PWM占空比
     PWMPulseWidthSet(PWM1_BASE, PWM_OUT_4, 10);
     PWMPulseWidthSet(PWM1_BASE, PWM_OUT_5, 10);
     //使能PWM输出状态
     PWMOutputState(PWM1_BASE, PWM_OUT_4_BIT| PWM_OUT_5_BIT, true);
     GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x1<<2);//H2管脚置高  对应RESETAB
     GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_3, 0x1<<3);//H3管脚置高 对应RESETCD
     //
     // 使能PWM发生器
     PWMGenEnable(PWM1_BASE, PWM_GEN_2);
     return(0);
]
PF1能输出PWM,而PF0不能输出PWM

回帖(7)

苏笛笛

2019-9-5 13:17:37
TM4C123x的PF0和PD7脚有锁,在解锁后方可以指定管脚功能。详细信息请参考GPIO部分的GPIOLOCK和GPIOCR寄存器及相关描述。
如果需要调整PF0的功能,需要在使能PF脚后执行如下操作:
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
HWREG(GPIO_PORTF_BASE + GPIO_O_CR) = 0xFF;
另,我在楼主的函数中没找到使能PF口和PWM外设的操作,可能楼主把这个放在别的地方了。只是提醒一下,这些操作应该先执行,然后再对PWM进行其它初始化。
 
谢谢。
举报

任黎平

2019-9-5 13:25:31
引用: Evawang 发表于 2019-9-5 14:27
TM4C123x的PF0和PD7脚有锁,在解锁后方可以指定管脚功能。详细信息请参考GPIO部分的GPIOLOCK和GPIOCR寄存器及相关描述。
如果需要调整PF0的功能,需要在使能PF脚后执行如下操作:
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;

Hi Michael Sun,
     谢谢你的回复,在主函数已经使能过用到的外设了
关于PF0和PD7有锁的部分在数据手册中没找到相关说明
是不是,需要修改一下这部分手册。便于使用者使用
举报

任黎平

2019-9-5 13:44:36
引用: Evawang 发表于 2019-9-5 14:27
TM4C123x的PF0和PD7脚有锁,在解锁后方可以指定管脚功能。详细信息请参考GPIO部分的GPIOLOCK和GPIOCR寄存器及相关描述。
如果需要调整PF0的功能,需要在使能PF脚后执行如下操作:
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;

Hi Michael sun,
      为什么PF0和PD7是加锁了呢,这两个管脚是不是有什么特殊的地方?
举报

苏笛笛

2019-9-5 13:52:30
您好!
关于有锁的说明,请参考GPIO章节中的 Commit Control中的描述:

实际上不只是PD7和PF0,PC[3:0]也是有锁的。因为PD7和PF0是和NMI中断复用的,NMI中断优先级很高(仅次于复位中断),为了防止程序误动作,加锁可以起到保护作用。PC[3:0]是Jtag。也是一种保护吧。
 
谢谢。
举报

更多回帖

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