engineer/controler/User/LCD/ctiic.h
2025-12-20 02:02:06 +08:00

78 lines
2.7 KiB
C

/**
****************************************************************************************************
* @file CT_IIC.h
* @author 正点原子团队(ALIENTEK)
* @version V1.0
* @date 2021-10-25
* @brief 电容触摸屏 驱动代码
* @license Copyright (c) 2020-2032, 广州市星翼电子科技有限公司
****************************************************************************************************
* @attention
*
* 实验平台:正点原子 探索者 F407开发板
* 在线视频:www.yuanzige.com
* 技术论坛:www.openedv.com
* 公司网址:www.alientek.com
* 购买地址:openedv.taobao.com
*
* 修改说明
* V1.0 20211025
* 第一次发布
*
****************************************************************************************************
*/
#ifndef __CT_IIC_H
#define __CT_IIC_H
#include "main.h"
/******************************************************************************************/
/* CT_IIC 引脚 定义 */
#define CT_IIC_SCL_GPIO_PORT GPIOB
#define CT_IIC_SCL_GPIO_PIN GPIO_PIN_0
#define CT_IIC_SCL_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0) /* PB口时钟使能 */
#define CT_IIC_SDA_GPIO_PORT GPIOF
#define CT_IIC_SDA_GPIO_PIN GPIO_PIN_11
#define CT_IIC_SDA_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOF_CLK_ENABLE(); }while(0) /* PB口时钟使能 */
/******************************************************************************************/
/* IO操作 */
#define CT_IIC_SCL(x) do{ x ? \
HAL_GPIO_WritePin(CT_IIC_SCL_GPIO_PORT, CT_IIC_SCL_GPIO_PIN, GPIO_PIN_SET) : \
HAL_GPIO_WritePin(CT_IIC_SCL_GPIO_PORT, CT_IIC_SCL_GPIO_PIN, GPIO_PIN_RESET); \
}while(0) /* SCL */
#define CT_IIC_SDA(x) do{ x ? \
HAL_GPIO_WritePin(CT_IIC_SDA_GPIO_PORT, CT_IIC_SDA_GPIO_PIN, GPIO_PIN_SET) : \
HAL_GPIO_WritePin(CT_IIC_SDA_GPIO_PORT, CT_IIC_SDA_GPIO_PIN, GPIO_PIN_RESET); \
}while(0) /* SDA */
#define CT_READ_SDA HAL_GPIO_ReadPin(CT_IIC_SDA_GPIO_PORT, CT_IIC_SDA_GPIO_PIN) /* 读取SDA */
/* IIC所有操作函数 */
void ct_iic_init(void); /* 初始化IIC的IO口 */
void ct_iic_stop(void); /* 发送IIC停止信号 */
void ct_iic_start(void); /* 发送IIC开始信号 */
void ct_iic_ack(void); /* IIC发送ACK信号 */
void ct_iic_nack(void); /* IIC不发送ACK信号 */
uint8_t ct_iic_wait_ack(void); /* IIC等待ACK信号 */
void ct_iic_send_byte(uint8_t txd); /* IIC发送一个字节 */
uint8_t ct_iic_read_byte(unsigned char ack);/* IIC读取一个字节 */
#endif