Other Parts Discussed in Thread:MSP430F5438A
MSP430F5438A在使用IO设置输入时可以使用上下拉吗?如果能,那么在使用复用IO时(比如SPI MISO),也是否可以使用上下拉电阻.
这是驱动函数库的代码,发现会自动关闭上下拉电阻,和复用功能。
void GPIO_setAsInputPin(uint8_t selectedPort, uint16_t selectedPins) {
uint16_t baseAddress = GPIO_PORT_TO_BASE[selectedPort];
#ifndef NDEBUG
if(baseAddress == 0xFFFF) {
return;
}
#endif
// Shift by 8 if port is even (upper 8-bits)
if((selectedPort & 1) ^ 1) {
selectedPins <<= 8;
}
HWREG16(baseAddress + OFS_PASEL) &= ~selectedPins;
HWREG16(baseAddress + OFS_PADIR) &= ~selectedPins;
HWREG16(baseAddress + OFS_PAREN) &= ~selectedPins;
}
Susan Yang:
您可以看一下用户指南的
12.2.4 Pullup or Pulldown Resistor Enable Registers (PxREN)
www.ti.com.cn/…/slau208q.pdf
,
user3854913:
当io是复用输入时(PxSEL=1时,这个脚是miso功能)这时可不可以设置上下拉?
,
Susan Yang:
可以的
,
user3854913:
设置上下拉为何关闭复用功能
就会发现寄存器的
HWREG16(baseAddress + OFS_PASEL) &= ~selectedPins;在使用驱动库SPI时如果使用内部上拉就要小心设置的前后顺序,不然会关掉复用功能
当io是复用输入时(PxSEL=1时,这个脚是miso功能)可以设置上下拉,那么PxDIR还要设置为0吗?