展讯8910DM:关于GPIO的控制问题

展讯8910DM平台GPIO的使用注意事项:

  • 不能更改:
    GPIO16可以拉高低,只是无中断,也不能做输入,寄存器对应位始终为高;
    GPIO6中断系统占用。
  • 可以更改:
    GPIO7休眠唤醒占用;
    GPIO4有的做SIM卡检测;
    GPIO13校准触发。

所以,OpenCPU时需要在清楚以上情况的条件下配置GPIO。

展讯公版代码中提供了读GPIO(drvGpioRead)和写GPIO(drvGpioWrite)这两个API,但是很多GPIO在调用这两个接口进行写操作和读操作后,该GPIO在gpio1寄存器的相应位会在读操作完成的瞬间被清零,导致读操作结束后对应GPIO pin脚的电压为零。

基于这种原因,我们可以不调用展讯提供的接口,直接读写寄存器即可,示例如下:

/**
 * @brief Write value for GPIO and then read register to check GPIO voltage is write or not.
 *
 * @param d            GPIO instance.
 * @param value        GPIO value to be set, true for high voltage or false for low voltage.
 *
 * @return
 *      - 1 if success
 *

你可能感兴趣的:(FreeRTOS驱动开发)