嵌入式笔记

1. 嵌入式

软件 - 语言

软件 - 协议

软件 - 排序

软件 - 平台

硬件 - 电源

应用 - FOC系列

应用 - Qt系列


2. 人工智能

机器学习


3. 数学


5. 技术交流

技术交流群 745662457
技术探讨,项目研究

### 关于蓝桥杯竞赛中的嵌入式学习笔记 #### IIC程序设计 在蓝桥杯嵌入式比赛中,IIC协议的应用是一个重要的考点。比赛重点在于利用IIC原理来操作24C02存储器以及MCP4017可编程电阻的读写功能[^1]。 ```c // 初始化I2C总线并设置参数 void I2C_Init(void){ // 配置代码... } // 向指定地址写入数据 void Write_IIC(uint8_t device_addr, uint8_t reg_addr, uint8_t data){ // 写入逻辑... } ``` #### PWM信号生成 对于PWM模块的学习,掌握如何配置定时器以产生特定频率和占空比的PWM波形至关重要。具体来说,可以通过调整`TIMx_ARR`寄存器设定周期(即频率),并通过修改`TIMx_CCRx`寄存器控制脉冲宽度(即占空比)。这使得能够灵活地创建不同特性的PWM输出信号[^2]。 ```c // 设置PWM通道的具体参数 void Set_PWM_Channel(TIM_HandleTypeDef* htim, uint32_t channel, float duty_cycle){ __HAL_TIM_SET_COMPARE(htim, channel, (uint32_t)(duty_cycle * (__HAL_TIM_GET_AUTORELOAD(htim)))); } ``` #### 串口通信实现 为了处理串口的数据传输,在实际项目中通常会定义缓冲数组用于暂存收发的信息,并通过中断服务例程完成异步接收任务。下面展示了基于STM32 HAL库的一个简单例子,其中包含了初始化、发送函数及自定义的UART接收回调函数[^3]。 ```c u8 huart1_buf[30]; // 接收缓存区大小设为30字节 u8 _huart1_buf; // 单字符临时变量 u8 huart1_buf_num = 0; // 当前位置指针 // UART接收完成后触发此函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance==USART1){ huart1_buf[huart1_buf_num++ % sizeof(huart1_buf)] = _huart1_buf; HAL_UART_Receive_IT(&huart1, &_huart1_buf, 1); } } ``` #### 定时器基础应用 最后,在涉及到时间间隔测量或者周期性事件触发的情况下,则需要用到定时器资源。例如,可以使用STM32内部集成的标准定时器(如TIM6/7)来进行精确的时间管理,从而实现诸如延时等待或是固定频率的任务调度等功能[^4]。 ```c // 使用CubeMX工具配置好硬件后,只需调用如下API启动计数过程即可 HAL_TIM_Base_Start_IT(&htim6); // 开启TIM6定时器中断模式 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

极客 - L U

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

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

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

打赏作者

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

抵扣说明:

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

余额充值