atk_ms6050_iic(1673).h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef __ATK_MS6050_IIC_H
  2. #define __ATK_MS6050_IIC_H
  3. #include "stm32f1xx_hal.h"
  4. /* 引脚定义 */
  5. #define ATK_MS6050_IIC_SCL_GPIO_PORT GPIOB
  6. #define ATK_MS6050_IIC_SCL_GPIO_PIN GPIO_PIN_10
  7. #define ATK_MS6050_IIC_SCL_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)
  8. #define ATK_MS6050_IIC_SDA_GPIO_PORT GPIOB
  9. #define ATK_MS6050_IIC_SDA_GPIO_PIN GPIO_PIN_11
  10. #define ATK_MS6050_IIC_SDA_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)
  11. /* IO操作 */
  12. #define ATK_MS6050_IIC_SCL(x) do{ x ? \
  13. HAL_GPIO_WritePin(ATK_MS6050_IIC_SCL_GPIO_PORT, ATK_MS6050_IIC_SCL_GPIO_PIN, GPIO_PIN_SET) : \
  14. HAL_GPIO_WritePin(ATK_MS6050_IIC_SCL_GPIO_PORT, ATK_MS6050_IIC_SCL_GPIO_PIN, GPIO_PIN_RESET); \
  15. }while(0)
  16. #define ATK_MS6050_IIC_SDA(x) do{ x ? \
  17. HAL_GPIO_WritePin(ATK_MS6050_IIC_SDA_GPIO_PORT, ATK_MS6050_IIC_SDA_GPIO_PIN, GPIO_PIN_SET) : \
  18. HAL_GPIO_WritePin(ATK_MS6050_IIC_SDA_GPIO_PORT, ATK_MS6050_IIC_SDA_GPIO_PIN, GPIO_PIN_RESET); \
  19. }while(0)
  20. #define ATK_MS6050_IIC_READ_SDA() HAL_GPIO_ReadPin(ATK_MS6050_IIC_SDA_GPIO_PORT, ATK_MS6050_IIC_SDA_GPIO_PIN)
  21. /* 操作函数 */
  22. void atk_ms6050_iic_start(void); /* 产生IIC起始信号 */
  23. void atk_ms6050_iic_stop(void); /* 产生IIC停止信号 */
  24. uint8_t atk_ms6050_iic_wait_ack(void); /* 等待IIC应答信号 */
  25. void atk_ms6050_iic_ack(void); /* 产生ACK应答信号 */
  26. void atk_ms6050_iic_nack(void); /* 不产生ACK应答信号 */
  27. void atk_ms6050_iic_send_byte(uint8_t dat); /* IIC发送一个字节 */
  28. uint8_t atk_ms6050_iic_read_byte(uint8_t ack); /* IIC接收一个字节 */
  29. void atk_ms6050_iic_init(void); /* 初始化IIC接口 */
  30. #endif