嵌入式蓝桥杯各个模块的代码模板

该文详细介绍了STM32中ADC的读取、RTC日期时间获取、自定义UART输出、I2C读写操作,以及按键扫描、消抖、长按检测的实现方法,还包括LED控制和LCD操作。此外,还涉及了定时器的使用,如捕获计时器频率和占空比的计算,以及串口接收中断处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混子王江江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值