前言
1、电压如何校准
2、时间跳变
一、获取adc
# include "badc.h"
double getADC(ADC_HandleTypeDef *pin){
uint adc;
HAL_ADC_Start(pin);
adc=HAL_ADC_GetValue(pin);
return adc*3.3/4096;
}
}
二、获取RTC日期时间
void get_time(void) //获取时间
{
HAL_RTC_GetDate (&hrtc, &data,RTC_FORMAT_BIN);
HAL_RTC_GetTime (&hrtc, &time, RTC_FORMAT_BIN );
}
三、重写输出函数
int fputc(int c,FILE*stream){
HAL_UART_Transmit(&huart1,(unsigned char*)&c,1,1000);
return 1;
}
四、I2C读写函数
1、读数据
uchar eeprom_read(uchar addr){
uchar dat;
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CStop();
I2CStart();
I2CSendByte(0xa1);
I2CWaitAck();
dat=I2CReceiveByte();
I2CWaitAck();
I2CStop();
return dat;
}
2、写数据
void eeprom_write (uchar addr,uchar dat){
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CSendByte(dat);
I2CWaitAck();
I2CStop();
}
五、按键
1、扫描四个按键并消抖
开启定时器3,设置为10ms的中断扫描。
1、interrupt.c文件
#include "interrupt.h"
struct keys key[4]={
0, 0, 0} ;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
if(htim->Instance==TIM3){
key[0].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0);
key[1].key_sta=HAL_GPIO_ReadPin(GPIOB