探索者开发板在将GPIOG的引脚作为信号输出端时,无法操作

2019-07-20 13:49发布

使用探索者开发板制作智能小车时,将自己写的可以使用的51单片机小车测试程序按照stm32编程规范重写移植之后,设置PG2,PG3,PG4,PG5作为正反转控制信号端,PG6,PG7作为PWM波信号端,PG8作为驱动模块使能端,开发板上除了这几个端口没有外接任何设备,然而在做测试时,发现PWM波信号正常,而其他几个端口的电平在初始置位后无法操作改变电平,一直维持初始电平不变,尝试过设置为推挽输出与上拉输出两种模式都不起作用,无法对着几个端口进行操作,使用的函数都是官方提供的模块操作函数。附代码如下:
引脚定义部分:
void Motor_Init(void)
{
        GPIO_InitTypeDef        GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);//使能GPIOG时钟
        //初始化PG_2.PG_3.PG_4,PG_5,PG_6,PG_7,PG_8
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//电机驱动芯片的对应IO口
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;//普通输出
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出模式
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//100MHz
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉
        GPIO_Init(GPIOG,&GPIO_InitStructure);//初始化GPIO
       
        //置Ain,Bin,PWM高位
        GPIO_SetBits(GPIOG,GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
        //置电机驱动使能位为低开始工作
        //GPIO_ResetBits(GPIOG,GPIO_Pin_8);

Motor_PWM函数:
void Motor_PWM(void)
{
        while(1)
        {
                GPIO_SetBits(GPIOG,GPIO_Pin_6|GPIO_Pin_7);
                delay_ms(10);
                GPIO_ResetBits(GPIOG,GPIO_Pin_6|GPIO_Pin_7);
                delay_ms(5);
        }
}

main函数:
int main(void)
{
        u8 key;
        delay_init(168);
        KEY_Init();
        Motor_Init();
        Motor_PWM();//启动PWM波生成函数

        while(1)
        {
                key=KEY_Scan(0);
                if(key)
                {
                        switch(key)
                        {
                                case WKUP_PRES:
                                                GPIO_SetBits(GPIOG,GPIO_Pin_2);
                                                GPIO_ResetBits(GPIOG,GPIO_Pin_3);
                                                GPIO_SetBits(GPIOG,GPIO_Pin_4);
                                                GPIO_ResetBits(GPIOG,GPIO_Pin_5);
                                        break;
                                case KEY0_PRES:
                                                GPIO_SetBits(GPIOG,GPIO_Pin_2);
                                                GPIO_ResetBits(GPIOG,GPIO_Pin_3);
                                                GPIO_ResetBits(GPIOG,GPIO_Pin_4);
                                                GPIO_SetBits(GPIOG,GPIO_Pin_5);
                                        break;
                                case KEY1_PRES:
                                                GPIO_ResetBits(GPIOG,GPIO_Pin_2);
                                                GPIO_SetBits(GPIOG,GPIO_Pin_3);
                                                GPIO_ResetBits(GPIOG,GPIO_Pin_4);
                                                GPIO_SetBits(GPIOG,GPIO_Pin_5);
                                        break;
                                case KEY2_PRES:
                                                GPIO_ResetBits(GPIOG,GPIO_Pin_2);
                                                GPIO_SetBits(GPIOG,GPIO_Pin_3);
                                                GPIO_SetBits(GPIOG,GPIO_Pin_4);
                                                GPIO_ResetBits(GPIOG,GPIO_Pin_5);
                                        break;
                        }
                }else delay_ms(10);
        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。