草庐IT

STM32---CAN

目录一.CAN协议简介二.CAN物理层三.CAN的协议层1.位时序2.CAN的报文四.CAN外设1.主控制寄存器CAN_MCR2.位时序寄存器CAN_BTR3.CAN的发送邮箱 4.CAN的接收FIFO5.验收筛选器五.CAN库函数相关结构体1.初始化GPIO结构体:2.初始化CAN结构体3.发送及接收结构体4.筛选器结构体六.写代码易出错点:一.CAN协议简介CAN是ControllerAreaNetwork的缩写。它具有高可靠性和错误检查能力,广泛应用在汽车计算机控制系统和环境恶劣,电磁辐射强及振动大的工业环境。二.CAN物理层CAN是异步通讯,半双工。有CAN_High和CAN_Low两

【STM32】的延时函数

目录前言一、1.for/while循环延时2.汇编延时3.SYSTICK定时器延时SYSTICK相关寄存器总结前言        延时函数是嵌入式中最常用到的测试手段,发现有许多方式可以达到延时的目的,所以这里做一点小总结。一、1.for/while循环延时代码如下:#defineSystemCoreClock(26000000U)//时钟频率26Mvoiddelay(inttime){for(inti=0;i时间公式:延时=time*2*机器周期*指令周期*(1/26M)链接:*2的原因2.汇编延时代码如下:/*汇编延时*/#defineSystemCoreClock(26000000U)/

STM32CUBE 安装报错 Error! Can‘t initialize plug-ins directory. Please try again later.

本文针对用户名(即USER)含中文导致报错的情况问题原因:Stm32Cube安装位置默认为C:\user\(用户名)\...\temp解决方案一、打开环境变量二、编辑用户变量中的Temp,Tmp打开C盘的用户(User)文件夹搜索Temp打开带有公用的Temp文件并复制地址替换带有中午的地址就行了!问题原因:Stm32Cube安装位置默认为C:\user\(用户名)…\temp解决方案一、打开环境变量二、编辑用户变量中的Temp,Tmp打开C盘的用户(User)文件夹搜索Temp打开带有公用的Temp文件并复制地址替换带有中午的地址就行了!

ESP32连接BLE设备具体实现的说明

文章目录一、基础概念二、相关API参数与使用说明三、整体连接流程总结本篇文章以ESP32C3平台作为主机连接血糖仪蓝牙设备的过程为例,对代码的实现进行分析与理解。一、基础概念在上手撕代码之前,让我们准备好砍柴刀,先使用nRFConnectAPP连接血糖仪对Gatt协议概念以及各层次进行理解,APP下载链接自行百度,这里就不贴出来了,废话不多说,打开手机蓝牙连接血糖仪蓝牙设备,左图为血糖仪的所有服务项,分别是GenericAccess、DeviceInformation、UnknownService、UnknownService四项服务(Service),右图是UUID为0x1000的Unkno

stm32用pid控制编码电机

stm32硬件PID控制编码电机stm32的定时器具有读取正交编码器的功能(所谓正交,就是波形相位互余的一对信号),其具体配置在之前的博客中我已经封装过函数了,没看过的朋友可以点击这里,位置式PID的封装函数也写过了,在这里。本文将以这些代码为例子,来写一个控制编码电机的代码。首先,给出控制电机的代码,原理很简单,就是输出比较而已。GuiStar_Motor.h:#ifndef__GUISTAR_MOTOR_H__#define__GUISTAR_MOTOR_H__#include"stm32f10x.h"//Deviceheader#include"GuiStar_TIM.h"#includ

STM32综合-基于HAL库(第十二届蓝桥杯嵌入式省赛)

文章目录前言一、CubeMX配置(第十二届省赛完整版)二、代码相关定义、声明1.函数声明2.宏定义3.变量定义三、主要函数1.按键扫描2.串口接收中断、定时器中断(接收)3.数据解析4.判定数据正误5.数据更新6.结算7.Main函数四、实验结果1.数据长度有误2.数据不合法3.数据正常五、源码(转载请注明出处)总结前言相关说明:开发板:CT117E-M4(STM32G431RB蓝桥杯嵌入式比赛板)开发环境:CubeMX+Keil5涉及题目:第十二届蓝桥杯嵌入式省赛题目难点:停车管理系统逻辑编写;数据接收,解析,判定,更新。代码思路:(使用usart1时需要修改引脚为PA8PA9PA10)串口

mysql - 在数据库中存储 MD5 时 BINARY(16) 和 CHAR(32) 之间的区别

基于各种建议,例如Whatdatatypetouseforhashedpasswordfieldandwhatlength?,我可以将md5存储为CHAR(32)或BINARY(16)。但是当我使用BINARY(16)这样做时,存储的值与CHAR(32)存储结果的前16个字符以及SELECTMD5()结果的前16个字符相同.后面的16个字符有什么意义,二进制列中没有它们会导致数据丢失吗?CREATETABLEtest(idINTNOTNULLAUTO_INCREMENT,valueVARCHAR(6),md5_charCHAR(32)NOTNULL,md5_binaryBINARY(1

【STM32-宏定义】

在点灯的时候遇到一个问题: GPIO_ResetBits(GPIOF,GPIO_Pin_9);//LED0对应引脚GPIOF.9拉低,亮等同LED0=0; GPIO_SetBits(GPIOF,GPIO_Pin_9);//LED0对应引脚GPIOF.0拉高,灭等同LED0=1;为啥通过GPIO_Pin_9 这个参数就可以设置GPIOF中引脚9的高低电平呢,我找到了GPIO相应的置位和复位函数://复位函数设置IO引脚为低电平,点亮ledvoidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin){/*Checktheparameters*/as

STM32-时钟系统详解

目录前言一、STM32时钟系统原理1.时钟系统框图2.时钟源讲解3.时钟去向讲解二、STM32时钟配置1.时钟配置简介2.时钟配置寄存器介绍3.时钟配置总流程三、Systick定时器及delay延时函数1.Systick定时器2.相关寄存器介绍3.延时函数配置总结前言        时钟系统之于单片机就如同与心脏脉搏之于人体,可见时钟系统的重要性可见一斑。然而STM32的时钟系统极其复杂,不像51单片机一样一个时钟系统就可以解决一切问题,这对于初学者来说很不友好,本文致力于讲解STM32时钟系统,使读者清晰了解STM32时钟背后的原理。一、STM32时钟系统原理1.时钟系统框图以下是STM32

STM32定时器+ADC制作简易示波器

一、方案先用LCD制作一个格子图形,然后定时器触发ADC采样。再将采集到的数据绘制成曲线显示在格子图形上,通过读取图形上的点来测量信号。本文使用的是原子哥的F103ZET6的战舰开发板。二、具体实施1.LCD初步显示LCD的配置代码我是直接复制原子哥的,直接调用了它里面的函数。因为我的屏幕是480*800,所以为了布局采用了横屏显示。首先根据方案,我要先制作一个格子图。并且为了观察波形的数据,加入了时间和数值显示。绘制格子是在函数display里面。格子的话时每隔20绘制一条线,可以根据自己情况修改。voiddisplay(void){ uint16_tt; LCD_Fill(0,0,800,