97 lines
3.8 KiB
C
97 lines
3.8 KiB
C
#ifndef _OLED2_H
|
||
#define _OLED2_H
|
||
|
||
#define SSD1306_I2C_ADDR 0x78
|
||
|
||
#define MAX_COLUMN 128
|
||
#define MAX_ROW 64
|
||
|
||
extern char oled_p;
|
||
extern char oled_s[2];
|
||
extern char oled_s_p6[2];
|
||
extern char oled_s_p10[2];
|
||
extern char oled_en;
|
||
extern unsigned int step_temp[2];
|
||
extern char run_mode_temp[2];
|
||
|
||
|
||
void OLED2_Send(unsigned char *data, unsigned char len);
|
||
void OLED2_Init(void);
|
||
void OLED_DisplayTest(void);
|
||
void OLED_MenuTest(void);
|
||
void OLED_ShowCN(unsigned char x,unsigned char y,unsigned char index);
|
||
void OLED_ShowString(unsigned char x,unsigned char y,char *str,unsigned char Char_Size,unsigned char color);
|
||
void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned char Char_Size,unsigned char color);
|
||
void OLED_Clear(void) ;
|
||
void OLED_DisplayOff(void);
|
||
void OLED_DisplayOn(void);
|
||
void OLED_SetPos(unsigned char x, unsigned char y);
|
||
void SSD1306_WriteData(unsigned char data);
|
||
void SSD1306_WriteCmd(unsigned char cmd);
|
||
|
||
/*******************************************模拟I2C***********************************************************/
|
||
#include <inttypes.h>
|
||
#include "main.h"
|
||
|
||
#define BSP_I2C_WR 0 /* 写控制bit */
|
||
#define BSP_I2C_RD 1 /* 读控制bit */
|
||
|
||
/* 定义I2C总线连接的GPIO端口时钟控制 */
|
||
|
||
#define I2Cx_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
|
||
#define I2Cx_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
|
||
|
||
/* 定义I2C总线连接的GPIO端口, 用户只需要修改下面3行代码即可任意改变SCL和SDA的引脚 */
|
||
#define BSP_GPIO_PORT_I2C GPIOB /* GPIO端口 */
|
||
#define BSP_I2C_SCL_PIN GPIO_PIN_6 /* 连接到SCL时钟线的GPIO */
|
||
#define BSP_I2C_SDA_PIN GPIO_PIN_7 /* 连接到SDA数据线的GPIO */
|
||
|
||
/* 定义读写SCL和SDA的宏,已增加代码的可移植性和可阅读性 */
|
||
//#if 0 /* 条件编译: 1 选择GPIO的库函数实现IO读写 */
|
||
//#define BSP_I2C_SCL_1() digitalH(BSP_GPIO_PORT_I2C, BSP_I2C_SCL_PIN) /* SCL = 1 */
|
||
//#define BSP_I2C_SCL_0() digitalL(BSP_GPIO_PORT_I2C, BSP_I2C_SCL_PIN) /* SCL = 0 */
|
||
|
||
//#define BSP_I2C_SDA_1() digitalH(BSP_GPIO_PORT_I2C, BSP_I2C_SDA_PIN) /* SDA = 1 */
|
||
//#define BSP_I2C_SDA_0() digitalL(BSP_GPIO_PORT_I2C, BSP_I2C_SDA_PIN) /* SDA = 0 */
|
||
//
|
||
// //#define BSP_I2C_SDA_READ() GPIO_ReadInputDataBit(BSP_GPIO_PORT_I2C, BSP_I2C_SDA_PIN) /* 读SDA口线状态 */
|
||
//#define BSP_I2C_SDA_READ() ((BSP_GPIO_PORT_I2C->IDR & BSP_I2C_SDA_PIN) != 0) /* 读SDA口线状态 */
|
||
|
||
//#else /* 这个分支选择直接寄存器操作实现IO读写 */
|
||
/* 注意:如下写法,在IAR最高级别优化时,会被编译器错误优化 */
|
||
#define BSP_I2C_SCL_1() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET) //BSP_GPIO_PORT_I2C->BSRR = (uint32_t)BSP_I2C_SCL_PIN /* SCL = 1 */
|
||
#define BSP_I2C_SCL_0() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET) //BSP_GPIO_PORT_I2C->BSRR = (uint32_t)BSP_I2C_SCL_PIN << 16U /* SCL = 0 */
|
||
|
||
#define BSP_I2C_SDA_1() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET) //BSP_GPIO_PORT_I2C->BSRR = (uint32_t)BSP_I2C_SDA_PIN /* SDA = 1 */
|
||
#define BSP_I2C_SDA_0() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET) //BSP_GPIO_PORT_I2C->BSRR = (uint32_t)BSP_I2C_SDA_PIN << 16U /* SDA = 0 */
|
||
|
||
#define BSP_I2C_SDA_READ() HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7) //((BSP_GPIO_PORT_I2C->IDR & BSP_I2C_SDA_PIN) != 0) /* 读SDA口线状态 */
|
||
//#endif
|
||
|
||
///* 直接操作寄存器的方法控制IO */
|
||
//#define digitalH(p, i) \
|
||
// { \
|
||
// p->BSRR = i; \
|
||
// } // 设置为高电平
|
||
//#define digitalL(p, i) \
|
||
// { \
|
||
// p->BSRR = (uint32_t)i << 16; \
|
||
// } // 输出低电平
|
||
|
||
void i2c_CfgGpio(void);
|
||
void i2c_Start(void);
|
||
void i2c_Stop(void);
|
||
void i2c_SendByte(uint8_t _ucByte);
|
||
uint8_t i2c_ReadByte(void);
|
||
uint8_t i2c_WaitAck(void);
|
||
void i2c_Ack(void);
|
||
void i2c_NAck(void);
|
||
|
||
|
||
|
||
|
||
|
||
/*******************************************模拟I2C***********************************************************/
|
||
#endif
|
||
|