我有多种"模式"的工作模式。 一种模式要求 PB5为 T1CCP1并输出1/10脉宽的1ms 脉冲。 另一种模式要求 PB5为 GPIO 输入。 可能有三种或四种不同的操作模式、每种模式都以不同的方式使用引脚。 我的代码包括一个有限状态机机制来执行设置、操作和每种模式的中断。
当进入使用 PB5作为 T1CCP1的模式时、设置代码执行此操作:
//将 GPIO 多路复用器设置为计时器
GPIOPinConfigure (GPIO_PB5_T1CCP1);
//将引脚类型设置为 CCP
GPIOPinTypeTimer (GPIO_PORTB_BASE、GPIO_PIN_5);
//将计时器配置为16位周期
TimerConfigure (Timer1_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PWM);
//设置 PWM 周期
TimerLoadSet (Timer1_base、timer_B、40000);
//设置脉冲宽度
TimerMatchSet (Timer1_base、timer_B、4000);
//启用计时器
TimerEnable (Timer1_base、timer_B);
这起作用了。 现在、我尝试执行撕下代码、在调用不同模式的设置代码之前将引脚恢复到其原始状态。 到目前为止、我只有以下内容:
//禁用计时器
TimerDisable (Timer1_base、timer_B);
//将引脚类型设置为 GPIO
GPIOPinTypeGPIOInput (GPIO_PORTB_BASE、GPIO_PIN_5);
我需要等效 的 TimerUnconfigure()来中断计时器设置,并需要 GPIOPinConfigure (GPIO_PB5_GPIO)来从计时器中取消复用引脚。 但没有函数 TimerUnconfigure()或等效函 数,也没有 GPIO_PB5_GPIO 或等效定义可传递给 GPIOPinConfigure()以反转 GPIOPinConfigure (GPIO_PB5_T1CCP1)的操作。
我如何才能删除此设置、以便多次进入和退出每个模式、并在切换后使引脚保持一致状态、而无需完全系统复位?