TI中文支持网
TI专业的中文技术问题搜集分享网站

tm4c123g奇怪的代码问题。

void main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_40| SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);
//初始化系统时钟。
PWM_Config();

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);//使能PE端口
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//使能PF端口,板上灯的端口

// GPIODirModeSet(SYSCTL_PERIPH_GPIOF , GPIO_PIN_1 , GPIO_DIR_MODE_OUT);//配置PF1口为输出状态
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1); //配置PF1口为输出状态
GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5); //配置E1,4,5为输出端口
GPIODirModeSet(GPIO_PORTE_BASE,GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 ,GPIO_DIR_MODE_IN);//配置E1,4,5口数据方向为输入
// GPIOIntTypeSet(GPIO_PORTE_BASE,GPIO_PIN_1,GPIO_RISING_EDGE);//E1口上升沿中断
// GPIOIntEnable(GPIO_PORTE_BASE,GPIO_PIN_1);//E1口中断使能
// IntEnable(INT_GPIO_PORTE);//使能E口中断
// IntMasterEnabl();//全局中断使能

ZPWM(250,400);
while(1)
{
GPIODirModeSet(SYSCTL_PERIPH_GPIOF , GPIO_PIN_1 , GPIO_DIR_MODE_OUT);//配置PF1口为输出状态
}
/* { SysCtlDelay(1000);
zhixian_xunji();
heixianchaxun();

}

*/
}

void PWM_Config(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);//使能PWM0模块
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能PWM0和PWM1输出所在GPIO B
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);//配置PB6/PB7为PWM功能
GPIOPinConfigure(GPIO_PB6_M0PWM0);
GPIOPinConfigure(GPIO_PB7_M0PWM1);
SysCtlPWMClockSet(SYSCTL_PWMDIV_1); //PWM时钟不分频
PWMGenConfigure(PWM0_BASE, PWM_GEN_0,PWM_GEN_MODE_UP_DOWN| PWM_GEN_MODE_NO_SYNC);//配置PWM发生器0:加减计数,不同步
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 1000);//频率1000一跳
PWMOutputState(PWM0_BASE, (PWM_OUT_0_BIT |PWM_OUT_1_BIT), true);
PWMGenEnable(PWM0_BASE, PWM_GEN_0);//使能PWM发生器
}

void ZPWM(uint32_t a,uint32_t b)
{
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, a);//pwm0输出占空比a/1000
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, b);//pwm1输出占空比b/1000
}

在while(1)中的那个GPIODirModeSet()配置函数,如果放在开头一起配置的话将会直接影响PB6和PB7的输出波形,没有输出;但是如果把这个函数在开头的地方屏蔽起来,PB6和PB7两个脚的pwm输出正常,后来经过不断的调整发现如果把配置函数放在while(1)中也不会影响到PB6和PB7的输出,而且只有这个对F口的配置函数对其有影响别的另外一个函数没有。

最后希望大家解释一下GPIODirModeSet()函数还有GPIOPinTypeGPIOInput()函数的区别,一般是不是只用后面的那个函数。

xyz549040622:

GPIODirModeSet()函数还有GPIOPinTypeGPIOInput(),前者是IO的输入输出模式的配置,后者只是输出一个电平而已。GPIODirModeSet()配置函数,如果放在开头一起配置的话将会直接影响PB6和PB7的输出波形,这是肯定的,你万一配置为高阻态,肯定影响PWM的执行了。

赞(0)
未经允许不得转载:TI中文支持网 » tm4c123g奇怪的代码问题。
分享到: 更多 (0)