蓝桥杯嵌入式学习————IIC、RTC、Buzz

本文介绍了在蓝桥杯嵌入式学习过程中,如何通过软件模拟IIC实现EEPROM功能,RTC实时时钟的配置调整,以及蜂鸣器在PB4端口复用和重映射的应用。在RTC配置中,由于开发板无外部低速时钟,将LSE相关设置改为LSI,并调整RTC预分频值。蜂鸣器部分重点在于解决PB4作为JTAG功能引脚时的复用问题。

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

注:这里指软件IIC,实时时钟,蜂鸣器用的PB4所以是学习端口复用

iic

这里使用软件模拟IIC是为了实现EEPROM的功能
这儿挺简单的,直接上代码吧

   //写在main函数中的,用作记录开机次数
    i2c_init();	
	temp = x24c02_read(0xff);
	Delay_Ms(2);
	x24c02_write(0xff,++temp);
	Delay_Ms(2);


/**
  * @说明   向AT24C02指定地址读入一个字节数据
  * @参数   address:AT24C02内部存储地址
  * @返回值   val:读出数据
  */
uint8_t x24c02_read(uint8_t address)
{
   
   
	unsigned char val;
	
	I2CStart(); 
	I2CSendByte(0xa0);
	I2CWaitAck(); 
	
	I2CSendByte(address);
	I2CWaitAck(); 
	
	I2CStart();
	I2CSendByte(0xa1); 
	I2CWaitAck();
	val = I2CReceiveByte(); 
	I2CWaitAck();
	I2CStop();
<think>好的,我现在需要处理用户关于第十二届蓝桥杯嵌入式比赛的查询。首先,用户提到参赛资料、技术文档和题目解析,所以我得先回想蓝桥杯嵌入式比赛的一般结构和内容。 蓝桥杯嵌入式比赛通常使用STM32微控制器,所以技术文档可能涉及STM32G4或F系列的手册。用户可能需要知道官方指定的开发平台,比如可能用的STM32G431或类似的型号。需要确认第十二届的具体型号,可能参考往届的资料,比如第十一届用G431,第十二届可能延续或更新。 参赛资料方面,用户可能需要知道如何获取官方发布的资料包,里面通常包含原理图、示例代码、数据手册等。技术文档可能包括模块的使用方法,比如LED、按键、定时器、ADC、通信接口等,这些都是比赛常见的考点。 题目解析部分,往届的题目通常涉及多个模块的综合应用,例如实现菜单系统、数据采集、通信协议等。需要分析可能的题型,比如客观题和程序设计题,客观题可能涉及电路设计或代码补全,程序设计题则需要综合运用外设。 用户可能还关心备赛建议,比如掌握哪些外设、学习哪些资料、做哪些练习题。需要推荐官方文档、开发板实践、往届试题分析,以及时间管理策略。 另外,测试自动化和持续集成在嵌入式测试中的引用来自用户提供的参考[2],可能需要联系硬件在环测试和实际场景测试,说明在备赛中如何进行系统测试,确保代码稳定。 需要确保回答结构清晰,分点说明,引用相关部分。同时生成相关问题,可能涉及备赛资源、常见题型、开发环境搭建、外设驱动编写、HIL测试应用等。</think>### 第十二届蓝桥杯嵌入式比赛解析与备赛指南 #### 一、参赛资料与技术文档 1. **官方资料包** 蓝桥杯嵌入式比赛通常提供包含开发板原理图、外设驱动库、数据手册的官方资料包[^1]。第十二届比赛可能沿用**STM32G4系列**(如STM32G431)作为主控芯片,需重点关注: - **原理图分析**:LED、按键、LCD、ADC、定时器、通信接口(UART、I2C、SPI)的连接方式 - **数据手册**:GPIO寄存器配置、时钟树结构、外设特性参数 - 示例代码:官方提供的底层驱动模板(如`lcd.c`、`key.c`) 2. **技术文档重点** - **开发环境**:Keil MDK-ARM V5的工程配置(芯片型号选择、调试器设置) - **模块技术**: - LCD显示:TFT屏的字符/图形绘制函数 - 定时器应用:PWM生成、输入捕获(如旋转编码器检测) - ADC校准:多通道轮询采集与滤波算法 - 通信协议:I2C温湿度传感器(如AHT21)、SPI Flash存储操作 #### 二、题目类型与解析(以第十一届为参考) 1. **客观题(20分)** - 电路设计:根据功能需求补全电阻/电容参数(如LCD背光电路限流电阻计算) - 代码补全:填写定时器分频系数或中断优先级配置代码片段 2. **程序设计题(80分)** **典型题目结构**: ```c // 示例:多级菜单系统 void Menu_Handler(uint8_t key){ switch(current_state){ case MAIN_MENU: if(key == KEY_UP) LCD_ShowString("Data Monitoring"); // 需实现状态机跳转逻辑 } } ``` - **高频考点**: - **数据采集系统**:ADC采集电压+温度传感器数据处理(需实现滑动平均滤波) - **控制算法**:PID调节PWM输出控制电机转速 - **通信协议**:通过UART发送JSON格式数据到上位机 #### 三、备赛技术路线 1. **核心技能训练** - **外设驱动开发**(每日2小时): ```c // ADC多通道采集示例 void ADC_Config(){ hadc.Instance = ADC1; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; // 确保采样周期符合器件要求 HAL_ADC_Start_DMA(&hadc, adc_buffer, 3); // 启动DMA传输3个通道 } ``` - **系统集成**:将RTC时钟、EEPROM存储、蜂鸣器报警整合为完整应用 2. **开发环境配置** - 安装**STM32CubeMX**生成初始化代码(特别注意`SYS`->`Debug`需设置为Serial Wire) - 在Keil中启用**AC5编译器**(官方评分环境兼容性要求) 3. **硬件在环测试** 参考嵌入式测试方法[^2],建议: - 使用**逻辑分析仪**验证I2C时序(重点检查SCL频率是否≤400kHz) - 搭建**自动化测试框架**:通过脚本自动发送UART指令并校验响应 #### 四、资源推荐 1. **官方指定教材**:《蓝桥杯嵌入式竞赛实训教程》- 包含历届赛题解析 2. **实战项目**: - 环境监测站:集成温湿度、光照度传感器+LCD数据显示 - 智能车控制系统:通过摇杆控制电机+实时速度显示 3. **调试技巧**: - 使用`Event Recorder`实现实时日志输出 - 通过`J-Scope`可视化ADC采集波形
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值