(自用)蓝桥杯准备(需要写的基础)

要写的文件
led_app
lcd_app
key_app
adc_app
usart_app
scheduler
LHF_SYS

一、外设引脚配置

1. 按键引脚

按键引脚配置如下:

  • B1:PB0
  • B2:PB1
  • B3:PB2
  • B4:PA0

2. LCD引脚

LCD引脚配置如下:

  • GPIO_Pin_9 /* PB.9 */
  • GPIO_Pin_8 /* PB.8 */
  • GPIO_Pin_5 /* PB.5 */
  • GPIO_Pin_10 /* PB.10 */

3. LED引脚

LED引脚配置如下:

  • PC8-PC15

4. USART引脚

USART引脚配置如下:

  • A9(USART1_TX)
  • A10(USART1_RX)
  • 今天一直因为串口的事情弄不起耗费两个小时,结果不是代码的问题,是板子有问题,啊,我真的服了,还把我的代码改成了一坨
  • https://blog.csdn.net/m0_46175974/article/details/134515555?ops_request_misc=%257B%2522request%255Fid%2522%253A%25229b5dc5d8695d41de72dc965cac7280d8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=9b5dc5d8695d41de72dc965cac7280d8&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-134515555-null-null.142v102pc_search_result_base3&utm_term=%E4%B8%B2%E5%8F%A3%E5%8F%AA%E6%8E%A5%E5%8F%971%E6%AC%A1%E7%9A%84%E5%8E%9F%E5%9B%A0&spm=1018.2226.3001.4187
    这个博主提到的一个问题,是我把自己弄晕过去遇到的,希望对你有帮助

5. 板上电阻

板上电阻R37和R38连接到:

  • PB15
  • PB12

二、关键函数

1. LCD显示函数

void LcdSprintf(uint8_t Line, char *format, ...)
{char String[21];va_list arg;va_start(arg, format);vsprintf(String, format, arg);va_end(arg);LCD_DisplayStringLine(Line, String);
}

使用说明

  • Line:指定LCD显示的行号。
  • format:格式化字符串,类似于printf的用法。
  • 该函数通过va_listvsprintf实现可变参数的格式化显示。

2. 按键状态检测

key_val = key_read();
key_down = key_val & (key_old ^ key_val);
key_up = ~key_val & (key_old ^ key_val);
key_old = key_val;

使用说明

  • key_read():读取当前按键状态。
  • key_down:检测按键按下事件。
  • key_up:检测按键释放事件。
  • key_old:保存上一次按键状态,用于对比。

3. ADC电压采集

uint32_t GetAdcVoltage(HAL_ADC_HandleTypeDef *hadc)
{HAL_ADC_Start(hadc);uint32_t adc = HAL_ADC_GetValue(hadc);return adc * 3.3 / 4096;
}

使用说明

  • HAL_ADC_Start(hadc):启动ADC转换。
  • HAL_ADC_GetValue(hadc):获取ADC转换后的值。
  • 由于ADC精度为12位,参考电压为3.3V,因此通过公式adc * 3.3 / 4096计算实际电压值。

4. 串口通信

(1)中断方式

如果忘记使用DMA,可以直接使用中断方式:

  • 配置引脚A9(USART1_TX)和A10(USART1_RX)。
(2)DMA方式

使用DMA接收串口数据:

HAL_UARTEx_ReceiveToIdle_DMA(&huart1, uart_rx_dma_buffer, sizeof(uart_rx_dma_buffer));
__HAL_DMA_DISABLE_IT(&hdma_usart1_rx, DMA_IT_HT);

使用说明

  • HAL_UARTEx_ReceiveToIdle_DMA:配置DMA接收串口数据,直到接收到空闲信号。
  • __HAL_DMA_DISABLE_IT:禁用DMA的半传输中断。
(3)标准输入输出重定向

为了在STM32上使用标准输入输出函数(如printfscanf),需要重定向fputcfgetc函数:

int fputc(int ch, FILE* str)
{HAL_UART_Transmit(&huart1, (uint8_t *) &ch, 1, 10);return ch;
}int fgetc(FILE *fp)
{uint8_t ch = 0;HAL_UART_Receive(&huart1, &ch, 1, 0xffff);return ch;
}

使用说明

  • fputc:将字符通过串口发送。
  • fgetc:从串口接收字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/77628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PM2 完全指南:Node.js 应用后台启动、关闭与重启详解

文章目录 **PM2 完全指南:Node.js 应用后台启动、关闭与重启详解****1. 什么是 PM2?****2. 安装 PM2****全局安装****验证安装** **3. 使用 PM2 启动 Node.js 应用****基本启动****指定应用名称****集群模式(多进程负载均衡)****监…

Linux环境变量详解

引言 在Linux系统中,环境变量是一种非常重要的概念,它影响着系统的运行方式和应用程序的行为。无论你是Linux新手还是经验丰富的管理员,深入理解环境变量都能帮助你更高效地使用和管理Linux系统。本文将从基础概念到高级应用,全面…

408 计算机网络 知识点记忆(8)

前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 往期内容 408 计算机网络 知识…

@linux系统SSL证书转换(Openssl转换PFX)

在Linux中,你可以使用OpenSSL工具将PFX/P12格式的证书转换为单独的CRT(证书)、KEY(私钥)文件以及提取证书链 1. 提取私钥文件(.key) openssl pkcs12 -in your_certificate.pfx -nocerts -out private.key -nodes系统会…

DAOS系统架构-组件

如上图所示,一个完整的DAOS系统是由管理节点组件、客户端节点组件、服务端节点组件以及网络通信组件四个部分组成。管理节点组件通过管理网络通道(蓝色)对DAOS服务管理和监控。客户端节点组件通过数据网络通道(红色)与…

制作一款打飞机游戏教程2:背景滚动

滚动原型开发 接下来,我们开始聚焦滚动原型的开发。我们需要确定游戏关卡的长度以及背景滚动的速度。 地图与精灵空间限制 在开发过程中,我们遇到了地图与精灵空间限制的问题。PICO 8的地图编辑器下半部分与精灵表共享空间,这意味着我们只…

计算机组成原理——CPU与存储器连接例题

计算机组成原理——CPU与存储器连接例题 设CPU共有16根地址线和8根数据线,并用(MREQ) ̅作为访存控制信号(低电平有效),(WR) ̅作为读/写命令信号(高电平读,低电平写)。现有下列存储芯片&#…

GNSS静态数据处理

1 安装数据处理软件:仪器之星(InStar )和 Trimble Business Center 做完控制点静态后,我们需要下载GNSS数据,对静态数据进行处理。在处理之前需要将相关软件在自己电脑上安装好: 仪器之星(InS…

Process Explorer 性能调优实战:精准定位资源泄漏与高负载进程

一、下载与安装 ‌下载地址‌ Process Explorer安装包下载:https://pan.quark.cn/s/950c36ba5364下载后解压压缩包,运行 procexp.exe(32 位系统)或 procexp64.exe(64 位系统)‌。 ‌界面概览‌ 主界面以树…

SVMSPro分布式综合安防管理平台-->以S3存储革新,开启智能安防新纪元

SVMSPro分布式综合安防管理平台–>以S3存储革新,开启智能安防新纪元 在数字化转型浪潮下,企业安防管理正面临海量数据存储、跨区域协同以及数据安全的严峻挑战。如何实现高效、弹性、低成本的存储扩容?如何确保关键录像数据万无一失&…

Python 装饰器(Decorator)

文章目录 代码解析1. 装饰器定义 timer(func)2. 应用装饰器 timer **执行流程****关键点****实际应用场景****改进版本(带 functools.wraps)** 这是一个 Python 装饰器(Decorator) 的示例,用于测量函数的执行时间。下…

git commit时自动生成Change-ID

创建全局钩子目录: 创建一个全局的Git hooks目录: mkdir -p ~/.githooks 下载并设置commit-msg钩子脚本: 下载Gerrit的commit-msg钩子脚本,并放置在全局钩子目录中(如下载不了,可从本页面附件中下载,“…

最新Ktransformers v0.24(Docker)并发部署DeepSeek-V3-0324模型

一、介绍 KTransformers v0.2.4 发布说明 我们非常高兴地宣布,期待已久的 KTransformers v0.2.4 现已正式发布!在这个版本中,我们对整 体架构进行了重大重构,更新了超过 1 万行代码,为社区带来了备受期待的多并发支…

飞牛私有云5大硬核功能实测!

📸 1. 智能相册:AI搜图原图自由 - 自动备份:手机照片/视频实时同步,支持RAW格式、实况照片无损备份,释放128G手机秒变256G。 - AI黑科技: - 人脸识别:自动归类人物相册,输入「妈妈…

webrtc pacer模块(一) 平滑处理的实现

Pacer起到平滑码率的作用,使发送到网络上的码率稳定。如下的这张创建Pacer的流程图,其中PacerSender就是Pacer,其中PacerSender就是Pacer。这篇文章介绍它的核心子类PacingController及Periodic模式下平滑处理的基本流程。平滑处理流程中还有…

【android bluetooth 协议分析 01】【HCI 层介绍 1】【hci_packets.pdl 介绍】

在 AOSP 的蓝牙协议栈 (Gabeldorsche) 中,hci_packets.pdl 是一个 协议描述语言文件,用于定义 HCI (Host Controller Interface) 层的数据包结构和通信协议。以下是详细解析: 1. 文件作用 system/gd/hci/hci_packets.pdl 协议自动化生成&…

操作系统 4.2-键盘

键盘中断初始化和处理 提取的代码如下: // con_init 函数,初始化控制台(包括键盘)的中断 void con_init(void) {set_trap_gate(0x21, &keyboard_interrupt); } ​ // 键盘中断处理函数 .globl _keyboard_interrupt _keyboard…

深入理解Softmax函数及其在PyTorch中的实现

Softmax函数简介 Softmax函数在机器学习和深度学习中,被广泛用于多分类问题的输出层。它将一个实数向量转换为概率分布,使得每个元素介于0和1之间,且所有元素之和为1。 Softmax函数的定义 给定一个长度为 K K K的输入向量 z [ z 1 , z 2 …

Vue 3 响应式更新问题解析

在 Vue 3 中,即使使用 reactive 或 ref 创建的响应式数据,当数据量很大时也可能出现更新不及时的情况。以下是原因和解决方案: 核心原因 ​​响应式系统优化机制​​: Vue 3 使用 Proxy 实现响应式,比 Vue 2 更高效但为…

异形遮罩之QML中的 `OpacityMask` 实战

文章目录 🌧️ 传统实现的问题👉 效果图 🌈 使用 OpacityMask 的理想方案👉代码如下🎯 最终效果: ✨ 延伸应用🧠 总结 在 UI 设计中,经常希望实现一些“异形区域”拥有统一透明度或颜…