atk_ms6050_iic.h 2.3 KB

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