目录一、前言1.欣赏一下整体效果2.先唠叨几句3.系统整体简介二、硬件系统1.选型1.1电路部分1.2机械部分2.控制系统三、底层驱动1.电机驱动2.舵机驱动和调速2.1舵机驱动2.2舵机调速3.蓝牙&串口屏驱动3.1蓝牙3.2串口屏4.灯带驱动4.1普通灯效实现4.3蹦迪灯效实现四、上层通信1.双机通信1.1IIC协议设计1.2双机通信指令集2.上位机通信2.1串口协议设计2.2上位机通信指令集五:小程序页面1.界面展示1.1蓝牙连接界面 1.2小车操作界面 2.界面设计2.1整体概况2.2小程序蓝牙发送数据 2.3操作界面具体实现六、组装和调试1.组装1.1组件展示1.2组装成果2.调试2
1.资料准备因为板子是stm32F407的第二版的,所以开始下的资料是旧版本的,但是旧版本的FreeRTOS工程没有hal库的,都是标准库的,这里是下载stm32F407最新版的资料,进行移植。资料可以在正点原子官网下载,如下:http://www.openedv.com/docs/boards/stm32/index.html一定要下载最新的资料(开始用旧版本的移植不成功)。准备stm32F407hal库的实验8基本定时器实验和实验37内存管理实验两个工程,以及FreeRTOS的源码,以内存管理实验为模版,进行移植。2.实验流程添加FreeRTOS源码添加FreeRTOSConfig.h配置
目录1新建cubemx工程 2配置系统时钟3配置串口引脚4生成keil工程5补充代码5.1重定向printf5.2main函数6编译烧录7实验现象1新建cubemx工程 选择对应芯片2配置系统时钟 主频为64MHz 对应给到usart2的时钟也为64MHz 3配置串口引脚 查阅原理图,可知usart2引脚连接了USB串口4生成keil工程5补充代码5.1重定向printf 首先介绍一下printf和scanf: printf函数根据format字符串给出的格式打印输出到stdout(标准输出)中,当然,printf函数是不会一个字符一个字符去输出
文章目录前言一、本地环境二、开始1.引脚配置2.内部时钟配置2.PWM配置4.代码生成3.编译工程4.添加功能代码在这里插入图片描述前言记录一下STM32CubeMX的学习笔记,同时分享给初学的小白,希望一起进步。如何使用STM32CubeMX以及工程创建在之前的博客有提到,这里就直接从设置PWM讲起。一、本地环境编译环境:KEIL代码生成:STM32CubeMX库:HALMCU:STM32F072二、开始1.引脚配置假设你的cubeMX工程已经建好,这里我们引脚图界面配置TIM2的通道2作为PWM输出:2.内部时钟配置配置完GPIO后开始配置时钟,我这里配置的是内部时钟,配置的24Mhz的内
一,stm32f103的定时器资源 stm32f103有一个高级定时器(TIM1),两个通用定时器(TIM2,TIM3)。以及一个基本定时器(TIM4)。对于通用定时器,是使用最广泛的定时器资源,有:输入捕获(可以测出输入信号的频率,占空比),输出比较(可以输出PWM波,驱动电机),编码器模式(编码器测转速),基本计数模式,主从触发模式。对于高级定时器,其功能在基本定时器的基础上又加上了:死区生成,互补输出,刹车输入等功能对于基本定时器,其功能只有计数定时功能本节先介绍定时器最简单的功能:定时产生中断。二,定时器硬件框图介绍:(一)基本定时器:核心:由自动重装寄存器(ARR)预分频器(PSC)
正点原子学习笔记1,printf函数输出流程2,printf的使用3,printf函数支持printf函数输出流程(C语言)1)用户调用printf()2)编译器从stdio.h里解析3)最终由fputc()实现输出由此用户需要根据最终输出的硬件重新定义该函数,此过程称为:printf重定向printf的使用1,printf("HelloWorld!\r\n");2,printf("%d\r\n",121); 常用输出控制符表控制符说明%d按十进制整数型数据的实际长度输出%ld输出长整型数据%mdm为指定的输出字段的宽度。如
Stm32学习笔记文章目录Stm32学习笔记前言的前言前言笔记Stm32三种开发方式的区别为什么Stm32初始化外设都需要先打开时钟GPIO八种模式Stm32寄存器映射Stm32中的位段映射Stm32中的时钟系统Stm32外设Stm32的端口复用与重映射Stm32中断Stm32的USART使用Stm32的外部中断(EXTI)Stm32库函数EXTI_GetFlagStatus和EXTI_GetITStatus区别Stm32的电源控制(PWR)Stm32中的备份寄存器(BKP)Stm32中的实时时钟(RTC)Stm32的低功耗模式Stm32的模数转换(ADC)Stm32中的直接存储器存取(DMA
文章目录前言一、电路图1.电阻测量公式2.电容测量公式二、代码实现1.外部中断代码2.定时器中断处理数据总结前言做的一个关于电阻和电容的测量电路,都是比较通用的。经过实际测试,电容测量电路还是可以的,电阻测量电路有一个缺点就是,随着测量时长的推移,在小电阻的测量时,比如0-100欧姆测量时,检测到的RC震荡频率会增加,所以小电阻需要校正一下,否则小电阻容易出现较大的偏差。大电阻的话测量精度还是可以的。一、电路图具体的电阻电容选值已经标好了,这个电阻电容的选值对应的测量范围为电阻10-1M欧姆,电容1-220nf左右。输出F口的作用主要在于通过两个自锁开关切换电阻或者电容的测量,只用占用单片机的
foc配置篇——ADC注入组使用定时器触发采样的配置foc驱动板都会用到电流采样,本篇就针对三电阻低测采样来讲一讲如何配置ADC。一、基本原理在此之前,或许大家使用ADC都是建立一个大数组,然后DMA无脑开着将数据搬到数组里,等到要用到时候就取出来做一个均值滤波。这种方法用在foc电流采样上行不行呢?答案是看情况,如果你的硬件用的是低采,这种方法是行不通的。因为低采的采样电阻在下桥臂到地之间,当下桥臂关闭时,电流是不能通过下桥臂流向地的,此时采样电阻自然也不会有电流经过(除了漏电流之类的)。因此,低采就是要当下桥臂开启的时候采样。如果我们还用无脑采,采样点在任意一个地方都是有可能的,可能采
目录一、内存管理的基本概念二、内存管理的应用场景三、heap_4.c1.内存申请函数pvPortMalloc()2.内存释放函数vPortFree() 四、内存管理的实验五、内存管理的实验现象一、内存管理的基本概念 在计算系统中,变量、中间数据一般存放在系统存储空间中,只有在实际使用时才将它们从存储空间调入到中央处理器内部进行运算。通常存储空间可以分为两种:内部存储空间和外部存储空间。内部存储空间访问速度比较快,能够按照变量地址随机地访问,也就是我们通常所说的RAM(随机存储器),或电脑的内存;而外部存储空间内所保存的内容相对来说比较固定,即使掉电后数据也不会丢失,可以把它理解为电脑的硬盘