/*! * @brief 反转引脚状态 * @param PTxn 端口 * @since v5.0 * @warning 务必保证数据方向为输出(DEBUG模式下,有断言进行检测) * Sample usage: gpio_turn (PTA8); // PTA8 管脚 输出 反转 */ void gpio_turn (PTXn_e ptxn) { ASSERT( BIT_GET( GPIO_PDDR_REG(GPIOX_BASE(ptxn)) , PTn(ptxn)) == GPO ); // 断言,检测 输出方向是否为输出 // 获取 GPIO PDDR 管脚号 ,比较是否为输出 GPIO_PTOR_REG( GPIOX_BASE(ptxn)) = 1 << (PTn(ptxn )); // GPIO PTOR ptxn 置1,其他清0 ,即对应管脚配置为端口输出反转,其他位不变 // 此处不能用 BIT_SET 这个宏来置1 ,因为必须保证其他位 不变,其他位直接清0即可 }
void Gpio::ChangePinState (uint8_t pin) { GPIO_PTOR_REG(portAdr[prt]) |= 1 << pin; }