蓝桥杯物联网竞赛_STM32L071KBU6_手动配置代码分析

本文主要是介绍蓝桥杯物联网竞赛_STM32L071KBU6_手动配置代码分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大概还有八天国赛,好久没练了,手动配置的代码又有些生疏了,再来回顾回顾

void OLED_Write(unsigned char type, unsigned char data){  // 主要是给显示屏写指令 unsigned char WriteData[2];WriteData[0] = type;WriteData[1] = data;HAL_I2C_Master_Transmit(&hi2c3, 0x78, WriteData, 2, 0xff);  // 函数是主机发送给显示屏用的i2c3线 
}void Function_OledInit(unsigned char ms){HAL_GPIO_WritePin(OLED_Power_GPIO_Port, OLED_Power_Pin, GPIO_PIN_RESET);HAL_Delay(ms);  // 这里延时一下是等主机通上电再调用初始化函数写指令 OLED_Init();  // 写指令 
}/*初始化指令不用返还数据取数据指令会返还数据用的spi1线 
*/ 
unsigned char SPI_WriteRead(unsigned char address, unsigned char data){unsigned char TxData[2], RxData[2];TxData[0] = address;TxData[1] = data;HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_RESET);  // 片选 HAL_SPI_TransmitReceive(&hspi1, TxData, RxData, sizeof(TxData), 0xff);HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_SET);return RxData[1]; 
}float* Function_AdcGet(unsigned char ms){uint16_t AdcData[2];static float AdcValue[3];for(unsigned char i = 0; i < 2; i ++){HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc, 0xff);  // 等待轮转 AdcData[i] = HAL_ADC_GetValue(&hadc);AdcValue[i] = AdcData[i] * 3.30f / 4095;HAL_Delay(ms); }HAL_ADC_Stop(&hadc);AdcValue[2] = AdcValue[0];AdcValue[0] = AdcValue[1];AdcValue[1] = AdcValue[2];return AdcValue;
}void Function_SendMsg(const char* data, uint16_t len){HAL_UART_Transmit(&huart2, data, len, 0xff);
}void Function_ReceiveMsg(char* data, uint16_t len){HAL_UART_Receive(&huart2, data, len, 0xff); 
}// << 8 等效 * 2 ^ 8 
float Function_GetTemp(){unsigned char Data[2];Data[0] = 0x24;Data[1] = 0x0b;HAL_I2C_Master_Transmit(&hi2c1, 0x94, Data, 2, 0xff);  // 向外设发送获取温度指令 HAL_I2C_Master_Receive(&hi2c1, 0x95, Data, 2, 0xff);  // 接收获取的温度数据 return (float) (Data[0] << 8 | Data[1]) * 175.0 / 65535 - 45;  // 转换返还 
}

再次分析一下在于OLED用的是i2c3,温度用的是i2c1,LORA用的是spi1,串口用的uart2,剩下就是一个adc了
配置对应引脚也是相应的配就可以了

这篇关于蓝桥杯物联网竞赛_STM32L071KBU6_手动配置代码分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997858

相关文章

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序