蓝桥杯嵌入式十五届模拟二(串口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显示

相关推荐
清风6666661 天前
基于单片机的多传感器智能云梯逃生控制器设计
单片机·嵌入式硬件·毕业设计·智能家居·课程设计
小何code1 天前
STM32入门教程,第10课(上),OLED显示屏
stm32·单片机·嵌入式硬件
来自晴朗的明天1 天前
高速画板-USB模块的PCB设计5-USB2.0/3.0布局布线要求
单片机·嵌入式硬件·硬件工程
早日退休!!!1 天前
ARM Cortex-M核 【保存上下文&恢复上下文】
arm开发·单片机·嵌入式硬件
来自晴朗的明天1 天前
差分控多少Ω阻抗
单片机·嵌入式硬件·硬件工程
点灯小铭2 天前
基于单片机的多功能智能婴儿车设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
学历真的很重要2 天前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain
iAkuya2 天前
(leetcode)力扣100 36二叉树的中序遍历(迭代递归)
算法·leetcode·职场和发展
码农小韩2 天前
基于Linux的C++学习——动态数组容器vector
linux·c语言·开发语言·数据结构·c++·单片机·学习
有一个好名字2 天前
力扣-小行星碰撞
算法·leetcode·职场和发展