我通过官方例程修改设置一个IO口周期的输出高低电平,但使用示波器或万用表测量时电平没有变化,但是换一个接LED的IO口就有一亮一灭的现象,这是为什么?
下面是我的代码:
int main(void) {MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN |SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480),120000000);MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);while(!(SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOB)));MAP_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4);GPIOB->PUR |= GPIO_PIN_4;while(1){MAP_GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4 , 0);delay_us(500);MAP_GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4 , 1);delay_us(500);} }
Susan Yang:
单纯程序看是没有什么问题的。请问您使用的是官方开发板还是您自己的板子?请给出板子的型号或者该IO的相关原理图。
明天我也会拿开发板测试一下回复
user6378692:
回复 Susan Yang:
是官方开发板,MSP-EXP432E401Y
Susan Yang:
回复 user6378692:
谢谢您的反馈!我暂时没有该开发板,明天拿MSP432P401的板子测试后给您回复,谢谢
Susan Yang:
回复 Susan Yang:
我今天用板子测试了一下,使用
/* Configuring P1.0 as output */ MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);
语句之后就会输出高电平
Susan Yang:
回复 user6378692:
int main(void) {volatile uint32_t ii;/* Halting the Watchdog */MAP_WDT_A_holdTimer();/* Configuring P1.0 as output */MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0); }
user6378692:
回复 Susan Yang:
你好,我在432E401Y工程里使用此API函数,调用失败,显示是没有此API函数的定义
unresolved symbol MAP_GPIO_setAsOutputPin, first referenced in ./adc0_singleended_hwaverage_singlechannel_singleseq.obj
Susan Yang:
回复 user6378692:
/* DriverLib Includes */
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>/* Standard Includes */
#include <stdint.h>
#include <stdbool.h>我的程序是使用了driverlib的
user6378692:
回复 Susan Yang:
我的例程也包含了driverlib,但还是调用失败,我也去driverlib/GPIO.h中看了,msp432E401Y中也没有此函数定义,我发现你使用的是P4xx的driverlib库,可能是两个不同的板子库函数也是不一样的
Susan Yang:
回复 user6378692:
抱歉,之前忘记说了…
我手边只有MSP432P401R的板子,所以一直使用的这个来测试的