蓝桥杯学习第三天

adc

这部分内容应该是必考的吧 引脚为PB15和PB12

double getADC(ADC_HandleTypeDef *pin)
{
	uint adc;
	HAL_ADC_Start(pin);
	adc=HAL_ADC_GetValue(pin);
	return adc*3.3/4096;
}

IIC学习

这部分内容十分简单因为此处内容直接调用官方给的软件IIC,此单片机还有硬件IIC。 引脚部分在给的代码里面有,所以可以不用配置引脚 alt text 这里我们用到的芯片为AT24C02

uchar eeprom_read(uchar addr)
{
	uchar dat;
	I2CStart();//I2C开启
	I2CSendByte(0xa0);//0xa0表示写入
	I2CWaitAck();
	I2CSendByte(addr);//发送地址
	I2CWaitAck();
	I2CStop();//关闭I2C
	
	I2CStart();
	I2CSendByte(0xa1);//0xa1表示读取
	I2CWaitAck();
	dat=I2CReceiveByte();//读取发送的地址
	I2CWaitAck();
	I2CStop();
	return dat;//返回值
}
uchar eeprom_write(uchar addr,uchar dat)
{
	I2CStart();
	I2CSendByte(0xa0);//写地址
	I2CWaitAck();
	I2CSendByte(addr);//地址空间
	I2CWaitAck();
	I2CSendByte(dat);//存入的数据
	I2CWaitAck();
	I2CStop();
}
//实例代码
if(key[3].single_sta==1)
	{
		uchar fre_h=fre1>>8;
		uchar fre_l=fre1&0xff;//分别写入频率的低八位和高八位
		eeprom_write(1,fre_h);
		HAL_Delay(10);
		eeprom_write(2,fre_l);
		key[3].single_sta=0;
	}
uint eep=(eeprom_read(1)<<8)+eeprom_read(2);//读取1和2地址的数据并将其整合。

本文章使用limfx的vscode插件快速发布