蓝桥杯嵌入式十五届模拟二(串口DMA,占空比的另一种测量方式)

一.LED

先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题

二.按键

按键配置,由原理图按键所对引脚要GPIO_Input

生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lcd.c、lcd.h、fonts.h添加到code中,然后去写按键控制灯亮灭的程序,看是否有问题

按键控制led没有问题后写lcd显示代码,显示没问题后,解决lcd与led引脚冲突问题,方法在我的其他文章中CSDN

HAL_GPIO_WritePin (GPIOD,GPIO_PIN_2,GPIO_PIN_RESET ); //为解决引脚冲突初始化lcd时 LCD_Init (); 要将锁存器锁存器来;

LCD_Clear (Black);

LCD_SetBackColor(Black);

LCD_SetTextColor(White);

三.LCD显示函数

void lcd_show(void)

{

sprintf(text," hello world");

LCD_DisplayStringLine (Line0 ,(uint8_t *)text);

}

四.显示功能

四.ADC(电压)功能

adc配置不需要中断

五.PWM输出(不用中断,需时钟源,有易错点)

PWM输出初始化时需要给CCR赋值,不然没有频率输出

六.按键功能

B1按键

B2B3按键

睡眠界面下按键

进入睡眠模式

七.串口功能(有小问题)

本次串口使用DMA

先设置波特率和异步通信,修改引脚

启用DMA功能

开启中断,之后生成代码

找串口接收函数,这里使用的函数与其他函数所在地方不同,注意查看位置

在文件中找到串口接收回调函数,写串口服务函数

复制代码
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size);

写好之后写一个串口接收处理函数,用于判断接收的字符是否是题目要求的,是去执行要求的功能语句

八.PWM功能

占空比的另一种测量方式

假设我们用PA6去捕获PWM,PA6引脚用的是TIM3 CH1,配置过程和正常的捕获配置一样,只是main函数中的时候额外打开一个通道二

占空比就在回调函数里计算了,我们配置的时候是CH1,计算频率除的捕获值还是用CH1通道捕获的值,计算占空比的时候就用通道二的除通道一的。

乘100.0是计算的结果转成小数,%。

九.脉冲输出

方波的占空比就是50%

频率的改变除了可以改变ARR还可以改变PSC,改变PSC是可以直接改变的,ARR是不行的

用TIM8来做定时器

十.led显示

相关推荐
java修仙传36 分钟前
力扣hot100:寻找旋转排序数组中的最小值
算法·leetcode·职场和发展
214实验室1 小时前
STM32串口打印使用printf乱码问题
stm32·单片机·嵌入式硬件
沐欣工作室_lvyiyi2 小时前
基于单片机的电厂烟道粉尘浓度检测系统(论文+源码)
单片机·嵌入式硬件·毕业设计
Groundwork Explorer3 小时前
异步框架+POLL混合方案应对ESP32 MPY多任务+TCP多连接
python·单片机
LYFlied3 小时前
【每日算法】LeetCode124. 二叉树中的最大路径和
数据结构·算法·leetcode·面试·职场和发展
d111111111d4 小时前
什么是内存对齐?在STM32上面如何通过编辑器指令来实现内存对齐。
笔记·stm32·单片机·嵌入式硬件·学习·编辑器
bai5459365 小时前
STM32 CuberIDE 中断
stm32·单片机·嵌入式硬件
小叶子来了啊5 小时前
5Arduino 程序结构
单片机·嵌入式硬件
小叶子来了啊5 小时前
1Arduino 简介
单片机·嵌入式硬件
yaoh.wang6 小时前
力扣(LeetCode) 94: 二叉树的中序遍历 - 解法思路
python·算法·leetcode·面试·职场和发展·二叉树·跳槽