嵌入式学习-FreeRTOS-Day2

一、重点知识

1、DMA的作用

DMA(直接内存访问)技术,可以实现外部设备与系统内存之间的高效数据传输、从而减轻CPU负担。

优点

复制代码
减轻CPU的负担,提高运行效率
加快传输数据

2、串口重定向

将串口的功能重新定义到标准输入或输出

我们可以将fputc这个函数进行重新实现,就可以实现用printf打印到串口中

3、串口的数据接收

处理定长数据

c 复制代码
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

在UART上启动一个接收操作,为异步操作

然后调用串口接收完成中断回调函数

使用空闲中断➕DMA来处理不定长的数据

c 复制代码
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

4、ADC采样

ADC是一种将模拟信号转换为数字信号的一种器件或者是电路

分辨率:采样的精度,分辨率越高就代表了采样精度越高,得到的数值越准确。

12位的ADC:采样得到的数据的范围是在0~2^12-1(4095)

函数:

c 复制代码
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc)

5、PWM

PWM是脉宽调制(Pulse Width Modulation)常用于控制电机速度、LED亮度调节、音频信号合成

占空比 = 高电平占整个周期的时间 / 总电平时间

(一个定时器有四个PWM输出通道:每一个通道都可以对应一个引脚,通过定时器输出PWM波形可以达到调节电压的效果。)

CNT:计数值 ARR:重装载值 CCRX:比较寄存器

1.当CNT的值到达ARR的时候就会溢出就会变成0,然后重新计数。 CNT从0开始计数。

2.当CNT = CCRX的值就表现高电平。 ARR的值已经确定了,通过调节CCRX可以调节高低电平的占比。

作业

1.使用ADC采样光敏电阻数值,如何根据这个数值调节LED灯亮度

连接硬件:将光敏电阻与单片机的ADC引脚连接,将LED灯与单片机的PWM引脚连接。

初始化:在程序中初始化ADC和PWM模块,并设置相应的引脚。

采样光敏电阻数值:使用ADC模块对光敏电阻进行采样,获取其数值。

转换为亮度值:根据采样到的光敏电阻数值,将其转换为对应的亮度值。可以通过一定的映射关系或者查找表来实现。

调节LED灯亮度:使用PWM模块控制LED灯的亮度,将转换得到的亮度值作为PWM占空比进行设置。

2.总结DMA+空闲中断接收数据的使用方法

配置ADC模块:首先需要配置ADC模块的参数,包括采样通道、采样精度、采样速率等。可以使用STM32CubeMX工具进行配置,或者手动编写代码进行配置。

配置DMA:使用DMA(直接内存访问)可以实现数据的高速传输,减少CPU的负载。配置DMA通道,将ADC的转换结果传输到指定的内存地址。

配置空闲中断:在DMA传输完成后,可以通过空闲中断来触发处理数据的操作。在空闲中断中可以读取DMA传输的数据,并进行相应的处理。

根据采样数值调节LED灯亮度:根据光敏电阻的采样数值,可以确定环境光的强度。根据需求,可以通过PWM(脉冲宽度调制)控制LED灯的亮度。根据采样数值的大小,调整PWM的占空比,从而改变LED灯的亮度。

相关推荐
liwulin050644 分钟前
【ESP32-S3】通过ROS2使用YDLIDAR X2进行SLAM、自主导航方案选择
单片机·嵌入式硬件
寒秋花开曾相惜1 小时前
(学习笔记)3.8 指针运算(3.8.3 嵌套的数组& 3.8.4 定长数组)
java·开发语言·笔记·学习·算法
是翔仔呐2 小时前
第11章 显示外设驱动:I2C协议OLED屏、SPI协议LCD屏字符/图片/中文显示
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
_李小白2 小时前
【AI大模型学习笔记之平台篇】第五篇:Trae常用模型介绍与性能对比
人工智能·笔记·学习
承渊政道2 小时前
【优选算法】(实战体会位运算的逻辑思维)
数据结构·c++·笔记·学习·算法·leetcode·visual studio
AI-Ming2 小时前
程序员转行学习 AI 大模型: 踩坑记录:服务器内存不够,程序被killed
服务器·人工智能·python·gpt·深度学习·学习·agi
m0_716765233 小时前
C++提高编程--STL常用容器(set/multiset、map/multimap容器)详解
java·开发语言·c++·经验分享·学习·青少年编程·visual studio
2501_945318493 小时前
零基础学习AI的选型指南:CAIE认证与编程型AI认证如何取舍
人工智能·学习
承渊政道3 小时前
【优选算法】(实战推演模拟算法的蕴含深意)
数据结构·c++·笔记·学习·算法·leetcode·排序算法
Keep learning!3 小时前
PCA主成分分析学习
学习·算法