我想把PC4至高,但是用万用表测出来电压只有0.6 0.7左右,这是为什么呀?
不是应该3.3v吗?
我是这样配置的:
GPIO_PORTC_DATA_R |= 0X10
yayun xu:
回复 Michael Sun:
谢谢。
我照着你给的配置
把GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4,GPIO_DIR_MODE_OUT)
改成GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_4)
就能输出3.3v。
但是这是为什么呀?
最近经常遇到这种问题,很是头痛呀。
Michael Sun:
回复 yayun xu:
GPIODirModeSet这个函数只是把这个GPIO的方向配置为输出。
GPIOPinTypeGPIOOutput这个函数的源码:
voidGPIOPinTypeGPIOOutput(uint32_t ui32Port, uint8_t ui8Pins){ // // Check the arguments. // ASSERT(_GPIOBaseValid(ui32Port));
// // Set the pad(s) for standard push-pull operation. // GPIOPadConfigSet(ui32Port, ui8Pins, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
// // Make the pin(s) be outputs. // GPIODirModeSet(ui32Port, ui8Pins, GPIO_DIR_MODE_OUT);}
这里会先把端口配置为GPIO功能,然后再配置方向。
这样就解释清楚了。
yayun xu:
回复 Michael Sun:
我之前是这样配置的
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4 ,GPIO_DIR_MODE_OUT);
GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_PIN_4);
改成
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_4);
GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_PIN_4);
就能工作。
我理解你说的意思,但是我的程序是从别人写成功移植过来的,为什么别人可以用?我的就不行?
每次看别人的程序都会出现这样的问题。
yayun xu:
回复 Michael Sun:
非常感谢你耐心的解答。谢谢。
Michael Sun:
回复 yayun xu:
别客气,后面开发过程中遇到问题也欢迎贴上来大家一起讨论。
TI中文支持网
