描述:本文整理了所有嵌入式蓝桥杯可能使用到的函数模块和代码
!!!!!!注意:重点掌握每个函数,函数内容(代码)可自行编写,但是需要调用的HAL库函数是唯一的
II2模块-->>EEPROM读写
------->>注意该模块无HAL库函数调用
此模块通过编写II2时序对具有存储功能的外设进行读写操作,如对M24C02芯片(存储芯片)、MCP4017T芯片(数字电位器)进行操作。
其中M24C02又称为AT24C02---->>>>即eeprom,此模块在竞赛中多次出现,重点需掌握对IIC时序的理解。
MCP4017目前为止未在考题中出现。
---------------------根据官方给出的i2c_hal.c-----------------------
我们编写对eeprom的读写函数。
/**
* @param--address:要将数据写入到eeprom中的地址
* @param--info:写如到eeprom中的数据内容
* @retval: None
*/
void x24c02_write(unsigned char address,unsigned char info)
{
I2CStart();/*开启I2C*/
I2CSendByte(0xa0);/*这里首先要对eeprom进行选择,因为IIC总线能够挂载多个外设,所以这里需要选
I2CWaitAck(); 择外设为eeprom*/
/*下面开始真正对eeprom进行操作*/
I2CSendByte(address);/*选择eeprom的地址*/
I2CWaitAck();/*等待eeprom回应*/
I2CSendByte(info);/*发送要写入到所选地址中的数据*/
I2CWaitAck();/**/
I2CStop();/*关闭I2C*/
}/*编写注意:只要记得在代码开始和完成时分别调用I2CStrat();和I2CStop();
以及在每次发送数据位后调用I2CWaitAck();就可以快速写出代码*/
/**
* @param--address:选择读取哪个存储单元内的数据
* @retval--(uint8_t) val:因为是读操作,所以1必要要将读取到的内容返回,故需要调用return函数
* 注意此时函数从void类型---->>变为uint8_t(返回值的类型)
**/
uint8_t x24c02_read(uint8_t address)
{
unsigned char val;
I2CStart();
I2CSendByte(0xa0);/*选择外设为eeprom*/
I2CWaitAck();
I2CSendByte(address);
I2CWaitAck();
I2