自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 【单片机学习笔记】上传一整年的自学电子笔记,互相交流,共同进步。

学习资料来源包括但不限于:正点原子、太极创客、硬石科技、野火_firege、喵呜实验室、小蜜蜂笔记、鱼C-小甲鱼、普中科技......我学的是车辆工程专业,去年八月份,加入了学院的创客工作室,在教室里学过相关课程就电工电子和C语言程序设计,学单片机基本靠自学。我将会在 【单片机学习笔记】 专栏中,将我一年多自学C语言以及单片机的所有笔记上传上来供大家参考。最早一篇笔记在20年九月底,今天是2021.9.26,期间我基本上是每周一篇电子笔记,这几天我抽空把之前的笔记整理后都上传上来。...

2021-09-26 09:16:30 13105 1

原创 【单片机学习笔记】(36):理解应用PID算法,通过上位机查看波形以整定PID参数

理解应用PID算法PID的实现方式分为两种—位置式和增量式。之前我用得比较多的是野火的位置式的PID计算代码,没怎么用增量式PID计算代码。位置式PID更便于理解,增量式PID的实际应用更多。两者本质上并没有什么不同。在编写PID算法实现代码时需要注意,位置式PID需要有积分限幅和输出限幅,而增量式PID只需输出限幅。算法推导过程截图的旧笔记链接如下:【单片机学习笔记】(26):编码器、PID、平衡车_wenhaiii的博客-CSDN博客算法代码实现摘录旧笔记链接如下:【

2021-10-24 21:52:32 6631 1

原创 [单片机学习笔记](35):串级PID算法应用剖析、通过串口控制电机、MPU6050获取平衡车姿态、自制平衡车PID算法程序设计

串级PID算法应用剖析这是经过给队友讲解串级PID的程序的之后的进一步的理解总结。内环的实际值,取决于你能测出什么值给内环。而内环的输入就是内环误差 内环的输出值,是内环误差(内环目标值-内环实际值)经过内环pid计算后的值(可加 死区,不要积分项,要微分项)其上限值需要考虑执行器所能控制的极限内环的目标值,同时也是外环的输出值。(这个值既是外环输出要趋近的值,也是内环输出要趋近的值) 外环实际值是内环实际值的积分,所以PID参数整定也是结合现象,用控制变量法先.

2021-10-18 00:30:23 6242 1

原创 【单片机学习笔记】(34):稚晖君开源六轴机械臂(粗浅认识)、PWM的互补输出、直流无刷电机单极性控制,双极性控制

稚晖君的最新开源机械臂(粗浅认识)没有使用无刷伺服电机(因为驱动系统比较复杂);用的是步进电机,采用谐波减速(自行设置一体式的驱动,可以做到体积更小)。采用铝CNC加工(轻度高、重量轻)主控芯片:stm32F4和ESP32双主控人机交互:蓝牙、WiFi,2.4G、CAN,、app控制,RPC框架&上位机,无线智能小终端,AR空间定位装置:双目视觉、AHRS系统、力传感和力回馈系统机械臂末端效应器(可自由更换): 夹爪,激光器等核心在于运动学正逆解.

2021-10-16 12:18:31 5998

原创 【单片机学习笔记】(33):直流无刷电机基础知识、六步换相控制原理、无刷电机驱动电路

本人是根据硬石可以和野火的开源教程来学习的,这篇的大部分内容是我学习过程中的截图。直流无刷电机基础知识可通过马鞍波来实现转矩的平滑输出直流无刷电机转子的机械角度和电角度电角度 = 机械角度 X 极对数霍尔效应原理六步换相控制原理当60度的霍尔传感器中的H2信号反相之后与H3调换位置,就可以用120度的控制代码转子逆时针旋转时120度安装的三个霍尔信号变化及通电情况转子顺时针旋转120度安.

2021-10-16 12:14:13 4111

原创 【单片机学习笔记】(32):L298N H桥驱动电路原理、基于野火的通信协议进行PID参数设置、中断服务函数标志位注意事项、非独立IO口注意事项、野火PID助手调参失败原因

L298N H桥驱动电路原理当驱动电压在7~12V时,可以不外接5V逻辑电平输入,直接由板载稳压给逻辑芯片供电。如果12~24V时,则必须将5V供电端子拔下,使用外部电源供电。基于野火的通信协议进行PID参数设置学习野火的串口控制修改目标值教程。可以让PID参数整定更为方便,为蓝牙控制之类的控制通过打好串口通信协议代码实现的基础(要触类旁通,做到拿到一种新的协议之后能够快速移植并为我所用)Frame 框架 protocol 协议 assis...

2021-09-27 17:01:58 4817 11

原创 【单片机学习笔记】(31):串口调试技巧、TFT触摸屏初识别、stm32F4与F1对比使用(全系列初始化概览)、YSF4的光耦隔离保护、外部中断与定时器消抖相结合的按键检

串口调试技巧可以将调试时会用到,但实际演示是不需要用到的代码用#if xxx //这里放调试代码#endifxxx是 一个宏定义,如果等于0则不编译相关代码,如果为1则编译相关代码SPI协议还有一个控制通信开始和结束的NSS(CS)信号线。TFTLED触摸屏FSMC:静态存储控制器将TFTLCD当成SRAM使用F4的使用(附带其他系列)HAL库可移植性高,即使是不同系列,大部分代码都相同,重新在cubeMX上设置一下即可。.

2021-09-27 16:56:43 2817

原创 【单片机学习笔记】(30):蓝牙通信、板球控制系统、串级PID

Debug方法当外设多了之后,有些外设初始化不成功的话,先去用st—link调试,找到出问题的,再去调换一下初始化的顺序。别在那一直看代码空想如果实在中断中调用的函数出问题,那就用led去把它放在相应函数的不同位置,看看能否正常执行过去!实在没思路,二分法也是不错的选择!注意变量赋值或者判断语句是否合适给程序做了标记记得取消,否则编译每次都会编译全部文件,速度很慢蓝牙通信两个蓝牙模块HC-05配对---血泪史_micro_xx的博客-CSDN博客_两个蓝牙模块配对

2021-09-27 16:53:47 2162

原创 【单片机学习笔记】(28):图形用户界面(GUI),串口通信协议与匿名上位机,获取MPU6050欧拉角,H桥电路、制作风力摆(空心杯电机、TB6612)

Graphical User Interface(GUI)(OLED)使用图形用户界面简易菜单菜单和各种显示都放到main.c里面,要显示的数据经过字符转化之后放到buff里面再 调用显示 。同一个页面的显示用个函数包装起来。直接用几个变量,通过它们的值来跳转不同的界面(达到这个效果后尝试在里面设置参数)或者用结构体,来定义不同的页面Openmv与F103串口通信任务:将openmv通过串口发送过来的数据用OLED显示出来(完成)注意串口的

2021-09-27 16:40:20 2207

原创 【单片机学习笔记】(29):平衡车PID参数整定,基于sysTick的任务调度,STLink四线连接、上位机查看波形,定时器按键消抖

p平衡小车PID参数调节直立平衡角度环PD控制,运动速度闭环外环PI控制哪个优先级更高先调哪个?平衡车增加PWM频率和速度更新周期后,效果不错的相应参数值为:角度环: P = 65,D= 3 速度环:P = 20 I= 0.2 机械零点偏移值为-2详细原理再看喵呜教程平衡小车还不太完善:重心并不平衡,虽然直立了,但有时候会缓慢往一边走 电机转向是有吱吱声(速度变化太大影响)上位机查看波形要使用喵呜实验...

2021-09-27 16:38:19 2050

原创 【单片机学习笔记】(27):sysTick知识补充、MPU6050、PID算法实现代码 、速度闭环内环控制

SysTick知识补充SysTick提供时基(产生节拍),通过一个变量来获取节拍。一般uwTickFreq时1KHz,uwTick经过1ms增加一次。通过定时器来给按键消抖MPU6050(六轴传感器)加速度传感器的本质是检测力陀螺仪用来测量物体的旋转角速度。(平衡车的角度和角速度可以用陀螺仪测量的数据得到)加速度计加速器有灵敏度,得到的数值需经过公式换算,才

2021-09-27 16:30:59 2355

原创 【单片机学习笔记】(26):编码器、离散化PID算法推导、增量式PID与位置式PID比较、平衡车

编码器绝对型编码器:每一个相位都会有相应的编号,即使转轴不转动,也会有信号输出增量型编码器:转轴不转动时无信号输出。增量型编码器有两个输出,分别为A相、B相。相位差为90度、定时器编码器模式读取脉冲数据Encoder Mode 编码器模式平衡车上的轮子转一圈单项脉冲数为384,那么轮子转一圈,AB相捕获到的脉冲数即为1536(384 X 4 (四倍 )个CubeMX上设置的编码器模式好像只适合与AB相的编码器,如果只有一相的话应该是测...

2021-09-27 16:27:09 3521 2

原创 【单片机学习笔记】(25):PID初识、门电路符号、H桥驱动电路、中断服务函数使用注意事项、SIM800C打电话发短信、OLED

直流有刷电机H桥控制门电路符号PID算法中断服务函数使用注意事项用完一个中断,记得要清除标志位。以及在初始化的时候最好也清除一下标志位,避免一上电就触发中断如果在中断服务函数里执行时间过长,超过了定时器的定时周期,那么即又会产生新的更新中断,可能会带来各种问题。尽量不要在中断服务函数里用延时在中断服务函数里指做一两个简单判断和加减,置一两个标记位就好默认情况下systick的优先级是最低的 ​中断有分为 外部中断 .

2021-09-27 16:23:54 1401

原创 【单片机学习笔记】(24):通用定时器输出PWM,输入捕获,电容按键

定时器高级控制定时器时基单元包含一个 16 位自动重装载寄存器 ARR,一个 16 位的计数器 CNT,可向上/下计数,一个 16 位可编程预分频器 PSC,预分频器时钟源有多种可选,有内部的时钟、外部时钟。还有一个 8 位的重复计数器 RCR,这样最高可实现 40 位的可编程定时。PWM模式1与PWM模式二相反输出PWM死区是防止上下管同时导通导致故障的设置用通用定时器3输出PWM控制led使用PWM时要记得把auto-reload...

2021-09-26 01:20:27 1155 1

原创 【单片机学习笔记】(23):HAL工程移植注意事项,数模转换、待机唤醒、程序设计要点

HAL库移植注意事项如果是直接移植的板级支持包,要记得去stm32f1xx_hal_conf.h把要用到的使能代码的注释给取消掉,否则该驱动不会被编译到工程中在用cubeMX配置工程的时候要勾选下图红圈的选项,否则不能调出stm32f1xx_hal_conf.h然后要将Hal库的相应.c .h文件复制到Driver目录下模数转换平时用的关键:编码值*分辨率=想要的数据Stm32f103的 三个ADC都是12位的,即最大数值位4096..

2021-09-26 01:17:01 1012

原创 【单片机学习笔记】(22):强制类型转换、定时器、独立看门狗初识、I2C通信协议(软件模拟IIC、串口程序移植)

简析强制类型转换上图的意思是将pData这个变量的地址强制转换为uint32_t类型的地址并赋予指针变量tmp,然后在下面那个函数的第二个参数中是取指针变量tmp这个被强制转化为uint32_t类型后的地址所指向变量的值定时器转存失败重新上传取消一般情况下f103所有定时器的时钟频率都是设置为72MHz的。基本定时器重新定义HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)初始.

2021-09-26 01:12:49 998

原创 【单片机学习笔记】(21):复用和重映射、DMA存储器到存储器、串口DMA使用、debug查看变量、常用存储器

端口重映射直接存储器访问控制DMA(Direct Memory Access )可以在无需任何CPU操作的情况下快速移动数据。DMA__CCR 位四是DIR设置:1表示从存储器到外设,0表示从外设到存储器使用流程:建立(选取)传输通道 存储器到存储器,外设到存储器 ,存储器到外设确定传输对象 UART-内存 , 内存-UART敲定传输细节 优先级 ,确定由谁来产生DMA请求,外设的...

2021-09-26 00:51:19 472

原创 【单片机学习笔记】(20):SysTick系统定时器,中断服务函数.中断向量表.中断向量,串口中断回显

SysTick系统定时器SysTick系统定时器含有一个计数宽度为24bit的向下递减的自动重装载计数器,计数器没计数一次的时间为1/CLKSourse。CLKSourse是系统时钟,F103可以是72MHz。这里和系统时钟一样,完全可以直接用 cubeMX来进行配置,没必要自己手动配置。SysTick的主要功能是给RTOS提供时钟节拍做时间基准。HAL库自带的延时函数就是通过它来延时的,但其实这并不值得推荐,一般都是用自己定义的基于其他定时器的延时函数。Frequency 频.

2021-09-26 00:47:48 1270

原创 【单片机学习笔记】(19):F4和F1的异同、自定义库(知识补充、解决遇到的错误)、位带操作、软件仿真、外部中断

/ 自定义库 /HAL库知识补充/遇到并解决的错误/出现: error: #29: expected an expression一般是在前后行或者相关定义声明前后出现中文字符(很可能是中文括号或者看不见的空格字符)出现“无法识别的预处理指令”错误当一个头文件被多个头文件调用的时候,就会出现重复定义的情况所以要使用#ifndef #define #endif 来避免重复定义出现“error:...

2021-09-26 00:44:11 2139

原创 【单片机学习笔记】(18):正点按键扫描、STM32串口通信及相关寄存器、外部中断

按键控制程序STM32串口通信及相关寄存器(串行通信和并行通信对比)(常用的串行通信接口)同步通信(SPI、IIC通信接口):建立发送方时钟对接收方的时钟的直接控制,使双方达到完全同步。带时钟同步信号,需要时间总线(传输带数据的位之间的距离均为为间隔的整数倍,字符间隔也一样要同步)异步通信(UART,单总线):发送与接收设备使用各自的时钟,不带时钟信号,,需要事先约定波特率。(异步通信以字符(构成的帧)为单位进行传输,字符与字符之间的时间间隔是任意的(可以

2021-09-26 00:36:40 826

原创 【单片机学习笔记】(17):结构体作为参数、按键控制原理、位带操作(简)、stm32的RCC知识

结构体作为参数HAL_GPIO_Init函数的第一个参数GPIOx就是经过文本替换后的寄存器基地址和偏移地址,所以不需要加取地址符。而HAL_GPIO_Init函数的第二个参数是结构体,LED_GPIO_Init是结构体指针(指针的指针),所以需要加取地址符(&)。按键控制原理WK_UP设置 下拉模式,此时读取相应引脚电平是低电平;当WK_UP被按下,读取到的电平是高电平。KEY0和KEY1设置上拉模式,此时读取相应引脚电平是高电平;当KEY0或.

2021-09-26 00:33:42 594

原创 【单片机学习笔记】(16):巡线小车制作、stm32程序启动过程、 工程目录下的组、HAL库关键文件、固件包、MDK5使用技巧、Include红叉报错

巡线小车制作电烙铁在275度左右比较适合上锡。103可调电阻最大阻值(两端引脚的阻值)约为10k欧,中间的引脚与两端引脚阻值可调。104可调电阻最大阻值约100k欧。stm32(Cortex—M3)程序的启动过程一上电就会触发复位异常。并且会跳转到中断向量表 特定偏移位置,然后获取里面的内容。修改复位异常内的内容,就可以让处理器去执用户指定的操作。启动文件(.s)做了如下四个步骤:初始化堆栈指针 设置PC指针的值(该值减8即是当前指令运行的地址.

2021-09-26 00:08:18 1327

原创 【单片机学习笔记】(15):C99 Mode、Led灯闪烁、板级支持包(BSP)、上下拉电阻、输出模式

C99 Mode当编译出现“declaration may not appear after executable statement in block”错误提示时,勾选C99 Mode可以让函数边定义边使用Led灯闪烁在主循环里调用HAL_Delay(1000);即可延时1s板级支持包(BSP)板级支持包(Board Support Package)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要实现对操作系统的支持,为上.

2021-09-25 14:07:55 1154

原创 【单片机学习笔记】(14):运行环境的配置、总线、IO口的软件配置、从参考手册到寄存器编程的实现思路、库的思想、HAL库初识

运行环境的配置可以通过两个途径进行运行环境的配置:1.环境管理工具。2.从库包中添加(较繁琐)(环境管理工具)较方便总线一条线路在同一时间内都仅能负责传输一个比特。因此,必须同时采用多条线路才能传送更多数据,而总线可同时传输的数据数就称为宽度(width),以比特为单位,总线宽度愈大,传输性能就愈佳。总线的带宽(即单位时间内可以传输的总数据数)为:总线带宽 = 频率 x 宽度(Bytes/sec)。当总线空闲(其他器件都以高阻态形式连接在总线上)且一个器件要与目的器件

2021-09-25 13:41:53 669

原创 【单片机学习笔记】(13):ST-Link下载、串口下载、寄存器与GPIO初探、结合使用cubeMX点亮两个led

ST-Link程序下载(上面这个图出现No target conneted,原因是我只插了st-link,没有插usb口给板子供电。)ST-Link下载时不供电,需要给stm32板子另外供电,否则不能下载!!!在遇到(no target conneted)问题时找到的https://blog.csdn.net/u011638597/article/details/82964891ISP串口下载STM32的ISP下载只能...

2021-09-25 13:39:40 1495

原创 【单片机学习笔记】(12):定时器中断、巡线小车各模块原理、stm32HAL库

快捷键 注释: 先CTRL+K,然后CTRL+C取消注释: 先CTRL+K,然后CTRL+U/ 定时器中断 /低电平和下降沿触发低电平触发:触发后一直处于中断状态,在低电平时间内中断一直有效,直到变为高电平。下降沿触发:检测到信号由下降沿时就触发开关动作,只触发一次,只有在下次电平发生变化时才会重新触发中断。中断 定时器/计数器:可以通过内部时钟或外部脉冲信号实现对寄存器数据加1的操作。定时时间T = 12x(2的n次方-x)/单片机晶振频率...

2021-09-25 11:35:12 2238

原创 【单片机学习笔记】(11):文件类型,加载库文件,温湿度传感器,激光测距传感器、光敏电阻控制舵机角度,ardunio面向对象编程,类的封装

/ .h .c 等工程文件 /C语言源程序文件(.c)、c++程序源文件(.cpp)、目标文件(.obj)、可执行文件(.exe)、头文件(.h)/ 添加库文件 /将库放在libraries里即可调用求完数/ 温湿度传感器 // VL6180激光测距传感器 /传感器包含一个非常小的激光源和一个匹配的传感器。 VL6180X可以检测“飞行时间”,或激光恢复传感器所需的时间从而计算出距离。VL6180使用精确的时钟来测量光从表面反弹所需的时间。..

2021-09-25 11:17:01 1043

原创 【单片机学习笔记】(10):串口通信原理、建立头文件、通过HC595控制8x8点阵、LCD1602、超声波传感器

/ 通信原理 /并行通信:将数据字节的各位用多条数据细线同时进行传输串行通信数据将数据字节分成一位一位的形式在一条传输线上逐个传输。因为一次只能传输一位,所以1字节的数据至少要分8位才能传输完毕。发送时把并行数据变成串行数据发送到线路上,接收时把串行信号再变成并行数据。同步通信:建立发送方时钟对接收方的时钟的直接控制,使双方达到完全同步。需要时间总线(传输带数据的位之间的距离均为为间隔的整数倍,字符间隔也一样要同步)异步通信:发送与接收设备使用各自的时钟,要求发送和接..

2021-09-25 11:13:19 1352

原创 【单片机学习笔记】(9):三种存储空间、IO口输出读取高低电平原理、三极管、中断操作

/ 51单片机的三个存储空间 /程序存储(code):0000H~FFFFH, 共64KB 这里的数据是只读的(把数组放这里边可以节省内部数据存储的资源)内部数据存储(data):00H~FFH,共256B外部数据存储(xdata):0000H~ffffH,共64KB,与上面一个不是同一个地址/ 51单片机输出高低电平原理 /P1、P2、P3内部具有上拉电阻;而P0口是漏极开路,内部无上拉电阻。如要P0口进行高低电平输出,需要加外部上拉电阻。单片机IO口默...

2021-09-25 11:10:31 4752 2

原创 【单片机自学笔记】(8):c51中的复合赋值运算符,开发版上的数码管、74HC245、74HC138的使用方法,结构体数组

/ C51中的复合赋值运算符 /变量 复合运算符 表达式先把变量与后边的表达式进行某种运算,然后将运算的结果赋给前面的变量。+= 加法赋值 ?+ 减法赋值*= 乘法赋值 /= 除法赋值%= 取模赋值 &= 逻辑与赋值|= 逻辑或赋值 ~=逻辑非赋值 >>= 右移位赋值 <<= 左移位赋值 ^= 逻辑异或赋值 逻辑异或不同为1,相同为0;1^1=0 1^0=1...

2021-09-25 11:07:22 1348

原创 【单片机自学笔记】(7):最小系统板焊接,开发板的控制、烧录程序注意事项、通过指针引用数组、定义和使用结构体变量

/ 最小系统板实操 /一开始控制不了风扇,没达到与其效果,推测是焊接有些地方锡太多,导致连到了旁边通过一个晚上用小刀挂掉那些可能短路的地方后,最终能让风扇转起来,并且DS18B20温度传感器有效果,四位数码管的显示也没啥大问题了。/ 焊接注意事项 /电烙铁头如果是黑的,是因为有氧化层,很难融化锡,先尝试在吸了水的高温海绵上将其抹去,如果没效果再用砂纸或小刀弄去后,再重新给电烙铁上锡。长时间不用时也需要关掉电源并且给点锡在

2021-09-25 00:09:16 1706 1

原创 【单片机学习笔记】(6):字符串处理函数、变量的三种情况、用函数实现模块化程序设计、晶振与延时、指针

/ 字符串处理函数 / stract函数 字符串连接函数例:printf(“%s”, stract(str1, str2));strcpy(字符串或字符数组名)和strncpy 字符串复制函数例:strcpy (str1, str2); 作用是把字符串2复制到字符串1去。例:strncpy(str1, str2, 2); 作用是将str2中的前两个字符取代str1的前两个字符strcmp(字符串1, 字符串2); (也可以吧字符串换成字符数组名) 字符串比较函数...

2021-09-25 00:04:04 891

原创 【单片机自学笔记】(5):数据计算及存储误差、数组、Servo库、硬件模拟PWM控制伺服电机、8乘8点阵

/ C语言 /数据计算及存储误差104页中的一段程序if(fabs(a)<=-6)printf(“is not a quadratic\n”)其中fabs(a) 的意思是求a(a是浮点型数)的绝对值由于disc(即b^2-4ac)是实数,而实数在计算和存储时会有一些微小的误差,因而不能直接判断“if(disc == )”。转而要判别“(if(disc <= 1e-6))”即disc是否小于一个极小的数,小于这个数就直接当成0处理。whil...

2021-09-23 23:04:30 964

原创 【单片机自学笔记】(4): C语言的printf和scanf中的格式字符、字符的输入输出、选择结构和条件判断、零碎的知识、Stepper库函数、自定义函数控制28BYJ-48

/ C语言的printf中的格式字符 /printf(格式控制, 输出列表)e格式符:用%e指定以指数形式输出实数实数占13列,一般自动给出的数字部分的小数位数为6位,指数部分占5列(如“e+002”,其中e占一列,指数符号占一列,指数占三列)例如 printf(“%e”,123.456);输出为:1.234560e+002也可用“%m.ne”形式的格式声明例如 printf(“%13.2e”, 123.456)输出为: 1.23e+002 (数...

2021-09-23 22:59:43 1133

原创 【单片机学习笔记】(3):数字电路基础知识、逻辑门电路、运算符的优先级、步进电机

/ 数字电路基础知识 /数字电路一位寄存器(即触发器):只能表示“0”和“1”两种状态的元器件二进制加1:在一个寄存器组的基础中,最右边的那个寄存器从0变为1(从断电到通电)或把最右边的一位从1变为0,并把右边数第二个寄存器当做最右寄存器继续相似操作 例:010+1 变成011 011+1 变成100二进制数乘2:把寄存器的通断电状态给左边的寄存器,最右边的状态设为0(右移一位即除以2)例:001*2 变为010 01...

2021-09-23 22:53:17 1705

原创 【单片机自学笔记】(2):猜数字程序所需知识、一些语法、蜂鸣器音乐、区分break与Contine与goto、寄存器:74HC595(扩展输出)

猜数字程序知识点上拉电阻输入上拉模式默认是高电平引脚可设置为INPUT_PULLUP模式(就不需要再自己加电阻)引脚悬空:当把Arduino的某一个模拟I/O设置为INPUT模式后,又不外接其他电路,则此时读取该引脚的的电平是,可能读取到高电平,也可能读取到低电平。ramdom(min, max) //随机产生一个从min到max-1的数字。二进制数前加B 十六进制数前加H一些语法digital: 数字 ...

2021-09-23 22:46:43 944

原创 【单片机学习笔记】(1):运算符、常用的控制语句、C51程序的基本结构、四位共阴极数码管的

1.“=” 赋值运算符2.算数运算符“*”乘运算符“/” 除运算符 例: 7/3=2;“%”取余运算符 例:7%3=1;3.增量和减量运算符++ 自增-- 自减4.位运算符~ 按位取反 100 →011<< 左移 (空的补零); >> 右移 (空的补零);&按位与; ^ 按位异或; | 按位或;5.关系运算符(关系运算符通常用来判断某个条件是否成立,运算结果只有0和1两种值。)&...

2021-09-23 22:04:12 2142

基于串级PID的板球控制系统(stm32RCT6、Openmv3)

我的搞得这个板球控制系统的主控stm32RCT6核心板和Opwnmv3,stm32通过HAL库编程(移植性很高,直接复制相应的.c .h 文件就行)。使用串级PID(外环是位置环,内环是速度环,基于野火的电机例程改的),我写代码挺喜欢写注释的,大家应该很容易理解,我是把整个板球控制系统的代码直接传传上来了,里面也有基于IIC的OLED和菜单板级支持包,压缩包里面也附带了openmv的代码(我队友写的),用Openmv IDE打开直接就能用,要的自取就行。 其实我也是要准备电赛刚学的PID,学stm32主要就是看正点、硬石、野火的教程。之前是买喵呜的平衡车套件,然后拿风力摆和板球练练手。串级PID其实不难,拿野火的电机例程改改就可以用了,改着挺顺手的。 这是我做的板球的效果https://www.bilibili.com/video/BV1L64y1s7py?share_source=copy_web

2021-08-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除