本帖最后由 jyysns 于 2019-8-12 11:20 编辑
求助各位,我想利用lpc824的wakeup键控制led灯,由原理图得知wakeup键对应P0_4引脚,如图根据引脚说明P0_4有ADC_11的固定功能。
因此先把此功能禁用,再分配开关矩阵PINASSIGN1寄存器的TXD(输出功能)给P0_4引脚。
我希望能实现按下wakeup键,函数读取P0_4电平,控制led。1.但是我发现虽然我禁用了P0_4的固定功能,调试中按下wakeup键仍是原有唤醒功能,不清楚原因,是其实还没有关闭固定引脚功能吗?2.是否应该为P0_4分配TXD还是应该分配RXD(输入功能)或别的什么或干脆不分配(0xff)?下面是我的开关矩阵函数
Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_SWM);//打开开关矩阵时钟
Chip_SWM_FixedPinEnable(SWM_FIXED_ADC11, 0);//关闭P0_4引脚功能
Chip_SWM_MovablePinAssign(SWM_U1_TXD_O, 4);//分配P0_4 引脚功能
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_SWM);//关闭开关矩阵时钟 附上禁用引脚功能的函数 /* true enables, false disables a Switch Matrix fixed-pin Function */
void Chip_SWM_FixedPinEnable(CHIP_SWM_PIN_FIXED_T pin, bool enable)
{
if (enable) {
Chip_SWM_EnableFixedPin(pin);
}
else {
Chip_SWM_DisableFixedPin(pin);
} 配置引脚功能的函数 /* assign a movable pin function to a physical pin */ void Chip_SWM_MovablePinAssign(CHIP_SWM_PIN_MOVABLE_T movable, uint8_t pin)
{
uint32_t temp;
int pinshift = PINSHIFT(movable), regIndex = PINASSIGN_IDX(movable); temp = LPC_SWM->PINASSIGN[regIndex] & (~(0xFF << pinshift));
LPC_SWM->PINASSIGN[regIndex] = temp | (pin << pinshift);
}
|