做个网站得多少钱,威联通怎么建设网站,旅游的网站怎么做,如何建一个购物网站前言
本篇内容需要参考之前的文章: Clion开发stm32之微妙延迟(采用nop指令实现)Clion开发STM32之日志模块(参考RT-Thread)Clion开发STM32之I2C驱动(参考RT-Thread)Clion开发STM32之HAL库硬件I2C驱动OLED 使用的是0.96寸OLED屏
测试文件
/**********************************…前言
本篇内容需要参考之前的文章: Clion开发stm32之微妙延迟(采用nop指令实现)Clion开发STM32之日志模块(参考RT-Thread)Clion开发STM32之I2C驱动(参考RT-Thread)Clion开发STM32之HAL库硬件I2C驱动OLED 使用的是0.96寸OLED屏
测试文件
/*******************************************************************************Copyright (c) [scl]。保留所有权利。******************************************************************************/
#include app_conf_test.h#define APP_CONF_ENABLE_OLED (1)
#if APP_CONF_ENABLE_OLED
#define DBG_ENABLE
#define DBG_SECTION_NAME OLED
#define DBG_LEVEL DBG_LOG // DBG_LOG DBG_INFO DBG_WARNING DBG_ERROR#include sys_dbg.h
#include oled/module_oled.hstatic soft_i2c_cnf_t I2C_Gpio_Cnf;
static i2c_bit_ops_t bit_ops {.option{.delay_us 1,.timeout100},.us_delay bsp_us_delay_nop
};
static struct i2c_bus_device i2c_device;/*-********************************************OLED变量定义******************************************-*/void oled_send(uint8_t device_addr, uint8_t cmd_type, uint8_t *data, uint16_t data_len) {rt_i2c_msg msgs[2];msgs[0].addr device_addr;msgs[0].flags RT_I2C_WR;msgs[0].buf cmd_type;msgs[0].len 1;msgs[1].addr device_addr;msgs[1].flags RT_I2C_WR | RT_I2C_NO_START;msgs[1].buf data;msgs[1].len data_len;if (i2c_device.master_xfer(i2c_device.bit_ops, msgs, 2) 0) {LOG_D(oled_send err);}
}/*-********************************************OLED_pre_init******************************************-*/
static void OLED_pre_init() {I2C_Gpio_Cnf.scl stm_get_pin(PB6);I2C_Gpio_Cnf.sda stm_get_pin(PB7);
}sys_pre_init_export(OLED, OLED_pre_init);/*-********************************************OLED_init******************************************-*/
static void OLED_init() {i2c_bus_init(i2c_device, bit_ops, I2C_Gpio_Cnf);LOG_D(OLED MODULE TEST);OLed_Registry_SendCall(oled_send);
}sys_init_export(OLED, OLED_init);/*-***********************************************OLED_after_init***************************************-*/
static void OLED_after_init() {OLed_Soft_Init();OLed_Cls();char msg[10] as:;size_t len strlen(msg);for (int i 0; i 100; i) {sprintf(msg len, %d, i);OLED_ShowStr(0, 0, msg, 1);HAL_Delay(1000);}
}sys_after_init_export(OLED, OLED_after_init);
/*-**************************************OLED内部使用************************************************-*/
#endif //APP_CONF_ENABLE_OLED