一知半解学习环境:
1、CubeMX 4.23.0
2、uVision 5.14.2
3、 MCU 启明 STM32F407 开发板(高配版) V3.1
4、 中景园电子0.96寸OLED
一知半解学习目标:
1、掌握CubeMX下RCC以及SYS的相关配置;
2、掌握CubeMX下IIC的相关配置;
3、掌握 OLED的使用 ;
一知半解实现过程:
1、配置系统调试接口及时基时钟源;
2、配置外部高速时钟源;
3、配置IIC3功能(开发板上IIC3引出);
4、配置时钟树;
5、配置IIC具体参数,此处保持默认参数即可;
6、生成工程,并添加程序;
首先,打开工程,在i2c.c文件中添加使用的OLED的驱动封装函数。由于封装函数较多,此处不一一给出,仅以OLED的初始化函数说明一下IIC写函数的使用方法(读函数同理);
函数原型:
HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
官方的注释如下:
/**
* @brief Write an amount of data in blocking mode to a specific memory address
* @param hi2c Pointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.
* @param DevAddress Target device address
* @param MemAddress Internal memory address
* @param MemAddSize Size of internal memory address
* @param pData Pointer to data buffer
* @param Size Amount of data to be sent
* @param Timeout Timeout duration
* @retval HAL status
*/
如下理解:
/**
* @brief IIC写函数
* @param hi2c 所使用的IIC对象。文中的使用的IIC3,因此参数为&hi2c3
* @param DevAddress 设备地址,根据操作设备的说明文档确定设备地址,此处根据OLED的说明手册确定为0x78
* @param MemAddress 设备内部地址,即访问的设备内部的内存编址,根据设备的操作方法确定;
* @param MemAddSize 设备内部地址编址方式,根据设备决定是8位编址或者16位编址方式;
* @param pData 指向用户待写入的数据;
* @param Size 写入数据的字节大小;
* @param Timeout 写入执行的超时时间;
* @retval HAL status 写入函数执行的返回状态;
*/
其次,在main函数中添加如下;
8、效果图;
一知半解 套路 回顾:
1、掌握CubeMX配置的常规套路,如SYS、RCC以及时钟树的配置等;
2、巩固CubeMX IIC接口的配置方法;
3、学会使用OLED的显示功能;