草庐IT

STM32两轮平衡小车原理详解(开源)

一、引言关于STM32两轮平衡车的设计,我想在读者阅读本文之前应该已经有所了解,所以本文的重点是代码的分享和分析。至于具体的原理,我觉得读者不必阅读长篇大论的文章,只需按照本文分享的代码自己亲手制作一辆平衡车,其原理并不言而喻了。源完整代码工程在文章末尾百度网盘链接,请需要的读者自行下载即可。另外,由于平衡车的精髓在于PID算法的运用,有需要了解PID算法的读者可以参考以下两篇文章:PID算法详解(代码详解篇),位置式PID、增量式PID(通用)_pid代码-CSDN博客PID算法详解(精华知识汇总)_小小_扫地僧的博客-CSDN博客二、所需材料1、STM32F03C8T62、MPU60503

STM32+2.9inch微雪墨水屏(电子纸)实现显示

本篇文章从硬件原理以及嵌入式编程等角度完整的介绍了墨水屏驱动过程,本例涉及的墨水屏为2.9inche-PaperV2,它采用的是“微胶囊电泳显示”技术进行图像显示,其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移,从而改变显示屏各像素点的颜色。墨水屏的原理决定了它具有很好的稳定性,如果电场不改变,粒子就不再运动,也不需要耗电,即使断电,墨水屏的画面也能保留,这个特性使其能作为电子铭牌或价签等重复使用。电子纸显示屏是靠反射环境光来显示图案的,不需要背光,在环境光下,电子纸显示屏清晰可视,可视角度几乎达到了180°。再加上低功耗的特性,电子纸非常适合作为Kindle等电子书阅读器的显示

【STM32】HAL库配置PWM功能

在STM32中HAL库使用PWM功能需要配置什么函数HAL_TIM_PWM_Init():初始化PWM定时器。HAL_TIM_PWM_ConfigChannel():配置PWM输出通道的参数,如通道号、极性、占空比等。HAL_TIM_PWM_Start():开始PWM输出。HAL_TIM_PWM_Stop():停止PWM输出。同时,还需要配置GPIO引脚的功能,将其配置为对应的PWM输出模式。__HAL_TIM_SET_COMPARE(__HANDLE__,__CHANNEL__,__COMPARE__):修改占空比__HAL_TIM_SET_PRESCALER(__HANDLE__,__PR

STM32 CAN快速配置(HAL库版本)

STM32CAN快速配置(HAL库版本)目录STM32CAN快速配置(HAL库版本)前言1软件编程1.1初始化1.1.1引脚设置1.1.2CAN参数设置1.1.3CAN滤波器设置1.2CAN发送1.3CAN接收2运行测试结束语前言控制器局域网总线(CAN,ControllerAreaNetwork)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。该协议的健壮性使其用途延伸到其他自动化和工业应用。CAN协议的特性包括完整性的串行数据通讯、提供实时支持、传输速率高达1Mb/

【单片机】基于STM32的UART串口通信

基于STM32的UART串口通信一、前言二、UART相关知识1、UART简介2、UART通信协议3、UART功能说明(1)正常USART模式下,通过这些引脚以帧的形式发送和接收串行数据:(2)在同步模式下连接时需要以下引脚:4、UART工作原理(1)发送接收(2)波特率产生(3)数据收发(4)中断控制(5)FIFO操作(6)回环操作三、STM32CubeMx配置四、UART发送1、初始化说明2、HAL库函数说明3、代码实现UART发送(1)直接发送(2)字符串发送五、UART接收1、初始化说明2、函数说明(1)CubeMx生成的UART中断处理函数(在stm32f1xx_it.c中)(2)HA

STM32滴答定时器SysTick精准延时,兼容HAL库和标准库

STM32手册资料下载:STM32资料Github链接;STM32资料Gitee链接;注意:Github是国外的,要翻墙,Gitee是国内的,无需翻墙。目录滴答定时器的功能模块化思想什么叫做模块化如何利用keil实现模块化第一步,准备工程文件第二步,建立delay.c和delay.h文件第三步,将sys加入工程第四步 ,加入路径代码.c文件 .h文件HAL库标准库今后如何将delay模块加入其他工程main.c调用初始化实现软件PWM Delay_us()实验Delay_ms()实验代码讲解Delay_Init()代码滴答定时器寄存器介绍 Delay_Init()函数介绍 Delay_us()

STM32系列——用最简单的方法学会按键长按

目录前言1.按键长按原理2.Cubmx配置3.keil5编写代码前言本教程基于stm32f103c8t6最小系统板,hal库开发。操作简单,讲解直接清楚,旨在让大家少走弯路。1.按键长按原理(1)要用1个定时器,设置好定时器周期并打开定时器中断。(2)每隔一段时间进入定时器中断回调函数判断按键是否按下,若按下,count++,将count转化为想要的时间,例如:定时器周期设置为0.1s,长按按键3s就点亮一个LED。这样的话,每隔0.1s,count++,3s=0.1s*30,至少需要进入中断30次,count>30则LED亮起,否则LED不亮。2.Cubmx配置这里用的是定时器1作为定时器中

STM32—ADC和DMA的应用之电流检测(第一部分:ADC和DMA的配置)

文章目录@[TOC](文章目录)前言一、ADC基本介绍1、ADC是什么2、ADC的供电和基准电压3、ADC通道二、DMA的基本介绍三、ADC和DMA的配置1、配置GPIO端口2、配置DMA_InitTypeDef结构体3、voidDMA_DeInit(DMA_Channel_TypDef*DMAy_Channelx)4、voidDMA_Init(DMA_Channel_TypeDef*DMAy_Channelx,DMA_InitTypeDef*DMA_InitStruct)5、voidDMA_Cmd(DMA_Channel_TypeDef*DMAy_Channelx,FunctionalSta

【STM32的空闲中断(Idle Interrupt)】

一、空闲中断基本框架STM32的空闲中断(IdleInterrupt)通常用于在CPU空闲时执行任务,例如在低功耗模式下减少功耗等。当CPU完成当前任务后,会进入空闲状态,此时会触发空闲中断。在空闲中断中,可以执行一些需要在CPU空闲时执行的任务,例如读取传感器数据、更新LCD显示等。要使用STM32的空闲中断,需要进行以下步骤:1.配置NVIC优先级:将空闲中断的优先级设置为较低的值。2.启用空闲中断:在代码中启用空闲中断,并设置空闲中断的处理函数。以下是使用STM32HAL库实现空闲中断的简单示例代码:voidHAL_UART_RxCpltCallback(UART_HandleTypeD

Arduino、STM32、树莓派的对比

编程语言:Arduino使用C/C++,STM32最常使用C语言,树莓派支持多种编程语言,但最常使用python。开发难度:Arduino开发难度和学习难度较低,开发者只需要通过简单学习,了解各个引脚和函数的作用,便可利用它开发出各种出色的项目。STM32需要更深入的理解和掌握,通常需要具备一定的编程和电子知识。而树莓派,因为它有操作系统,所以必须得了解os和linux的基本原理和操作系统基础知识。型号:arduino和STM32有很多的型号,因此,无论做的项目是大是小,都可以很容易地找到合适的arduino开发板。。而树莓派型号较少,也只有三种尺寸。因此,如果项目尺寸比较小,就不适合用树莓派