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.

TM4C123BH6PGE的所有GPIO无法翻转输出矩形波,求解。

Other Parts Discussed in Thread: TM4C123BH6PGE

#define TARGET_IS_BLIZZARD_RB1

#include <stdint.h>
#include <stdbool.h>

#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "inc/HW_GPIO.h"
//
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"


#include "driverlib/rom.h"
#include "driverlib/rom_map.h"


int main(void)
  {
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOM);


    ROM_GPIOPinTypeGPIOOutput(GPIO_PORTM_BASE, GPIO_PIN_1);

    while(1)
    {
        ROM_GPIOPinWrite(GPIO_PORTM_BASE,  GPIO_PIN_1,GPIO_PIN_1);
        ROM_SysCtlDelay(ROM_SysCtlClockGet()/300);

        ROM_GPIOPinWrite(GPIO_PORTM_BASE,  GPIO_PIN_1, 0);
        ROM_SysCtlDelay(ROM_SysCtlClockGet()/300);
    };

}
问题描述:

1.我有一块TM4C123BH6PGE的板子,使用上面的代码使PM1输出一个矩形波。通过示波器观察,发现一开始确实有矩形波产生,过了4秒左右后矩形波消失,PM1输出高电平。重新复位,PM1又输出矩形波,过了4秒左右,矩形波又消失了,PM1输出高电平。

2.我随机测试了其他几个引脚(PM5 PF3 PD0 PD5 PP1),发现都是这个情况。

3.我把上面的两句ROM_SysCtlDelay(ROM_SysCtlClockGet()/300);改成ROM_SysCtlDelay(ROM_SysCtlClockGet()/3);,使得GPIO翻转周期变长,发现这时输出正常。但是我把周期再缩短,改成ROM_SysCtlDelay(ROM_SysCtlClockGet()/30);,输出再次不正常。

4.我把上述代码全部换成TIVA自带的库函数,不使用ROM库函数,发现情况更严重:不论翻转周期多长,GPIO始终输出高电平=。=

5.我更换了另外一块一模一样的板子进行测试,发现一切正常,不论什么情况下GPIO都能持续输出矩形波。

因此小弟感到很困惑,特来求教,谢谢。