完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
实验平台简介:
1.WIRELESS模块接口 这个是开发板搭载的无线通信模块,用来外接NRF24L01还有RELD模块,有一点需要注意,就是一块板子不可以进行NRF24L01不可以进行无线通信,必须要有两个模块两块板子才可以进行通信。 2.W25Q128 128M FLASH 这个是开发板外扩的SPI FLASH芯片,用于存储数据,容量为128bit,容量是属于比较大的。 与FLASH芯片常容易混淆的是RAM芯片,RAM芯片断电后数据会丢失,但是FLASH芯片断电后数据不会丢失,RAM芯片的读取速度也比FALSH芯片更快。 3.引出IO口 STM32F103ZET6一共有12个IO口。 实验八.ISP程序下载方法 首先确保硬件连接电路的正确,单片机的RXD和PA9要进行短接,TXD和PA10要进行短接 B0和B1要接地,也就是说要用短接片连接 程序下载的话使用一个fiymcu,然后下载波特率那里F4的话波特率不超过76800,对于F1的话波特率任意 实验九.PWM输出 stm32控制舵机旋转到不同角度 补充学习资料 舵机旋转的角度不同是因为高电平所占的时间占总时间的比例,类似于这个博客里面的 舵机的周期是20ms,01/20=0.05,所以说如果定的时钟为900的话,那么由高电平变成低电平的时间应该为900*0.05=45 第10讲新建工程模板——基于固件库 详细过程就参考库函数开发指南,没有很多需要理解的地方,按照步骤一步步的来就可以。 第13讲 手把手编写跑马灯实验 知识学习: 这一节首先讲解了一些GPIO的知识,我认为GPIO对应的就是PA几。讲解了几个小技巧,在头文件里面使用#ifndef #define #endif条件编译避免头文件重复定义,MDK有一个BUG就是最后是以回车结束的。 跑马灯实验代码详解: #include “sys.h” #include “delay.h” #include “usart.h” #include “led.h” int main(void) { delay_init(); //ÑÓʱº¯Êý³õʼ»¯ LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú while(1) { LED0=0; LED1=1; delay_ms(300); //ÑÓʱ300ms LED0=1; LED1=0; delay_ms(300); //ÑÓʱ300ms } } 流程为 引用头文件; 主函数 { 延时函数初始化; LED灯初始化; 点亮小灯并在小灯闪烁时进行延时处理; } 结束 第12讲GPIO工作原理 STM32F1ZET6一共有7组IO口,GPIOA~GPIOG STM32的大部分引脚除了可以当做GPIO使用,就是最简单的IO口,还可以当做一些外设功能的功能引脚,比如说串口,对于STM32F1的话大部分的IO口都是可以容忍5V的,不能接5V的会在芯片手册的后面缺少一个FT。 GPIO的工作方式 4种输入模式 输入浮空 浮空输入模式下这两个开关不会打开。 输入上拉 输入上拉与输入浮空的区别就是在VDD的下面加上了一个30-50K的一个 上拉电阻 输入下拉 就是与GND连接一个下拉电阻 模拟输出 4种输出模式 推挽输出 推挽复用输出 开漏输出 开漏复用功能 推挽输出可以输出强高低电平,而开漏输出只可以输出强低电平,但是开漏输出适合做电流型的驱动,其吸收电流的能力相对强。 STM32引脚说明 端口复用功能 所谓的端口复用功能就是一些端口不仅可以作为通用的IO口,还可以复用为一些外设的引脚,可以简单概括为一口多用,能够最大限度的利用端口资源。每个串口可以复用为哪个功能在芯片手册里有详细讲解。 端口重映射 就是可以把某些功能引脚映射到其他引脚,比如串口1默认引脚是PA9,PA10,可以通过配置重映射映射到PB6,PB7。这个主要的目的作用就是方便布线。 所有的IO口都可作为中断输入。 第16讲 蜂鸣器实验 1.蜂鸣器的硬件连接 蜂鸣器有两个口,只要之间有电压降,有电流通过就会响 单片机的IO口通过电流其实很小,所以一般用单片机只是用来做控制,不会用来做驱动,那么具体一点的话IO口不可以直接驱动TT电机,不可以直接接蜂鸣器 IO口的浮空指的是什么意思呢,就是IO口输出的电平有些时候是高,有些时候是低,不确定。 单片机IO口产生的电流很小,可以使用三极管的放大功能来实现 但是不可以直接连接三极管,单片机的IO口在复位之后是虚空状态,单片机可能会产生一些微小电流,再经过三极管放大以后就可以使得在不想让蜂鸣器响的时候蜂鸣器也会响,那么在基级前面加一条支路连接地,那么就可以分担一部分电流使得只有在电流很大的时候(也就是IO口为高电平的时候)才会响 2.手把手写蜂鸣器实验 第一步:使能IO口时钟。调用函数 第二步:初始化IO口模式,调用函数GPIO_Init(); 第三步:操作IO口,输出高低电平 操作函数其实也是操作寄存器,51是直接操作寄存器,然后32的话因为寄存器太多了,所以间接的通过操作库函数来操作寄存器 注:对于探索版下载的话波特率不可以太高 第17讲 按键输入实验-GPIO做输入 首先定一个基调,这个实验与我在51上面学的差不多 1.按键实验的硬件连接 注意:KEY_UP按键,按下,IO口检测到高电平。KEY0/KEY1/KEY2按下,IO口检测到低电平。 对于KEY0/KEY1/KEY2,这几个按键没有按下的时候应该检测到的是高电平,而对于KEY_UP按键,没有按下的时候应该检测到的是低电平。 我理解的上拉下拉就是在没有按下的时候是高电平还是低电平。 读取IO口输入电平调用的库函数是 unit8_tGPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx,unit16_t GPIO_Pin); 通过这个库函数的英文名字也可以看出来,这个库函数的作用是读取输入数据。 2.GPIO输入操作说明 GPIO输入库函数说明:有三种操作方法 0.1调用读取IO口输入电平的库函数 0.2直接操作读取IO口输入电平的寄存器 0.3使用位带操作读取IO口输入电平方法 下面的步骤对应的就是程序实现的算法流程 手把手写按键输入试验的话: 第一步是使能IO口对应时钟,我的理解是比如我所用的按键对应的IO口是PC1,那么这IO口所对应的时钟要将其使能。调用的函数是RCC_APB2PeriphClockCmd(); 第二步是初始化IO模式:上拉下拉输入。调用函数:GPIO_Init();这个在之前那一讲解,上拉下拉,推挽开漏。 第三部是扫描IO口电平 3.按键实验,源码说明 讲解一下两种不同定义方式的区别 普通的int使用完了就会被释放,但是STATIC不会,他使用完了不会被释放 第18讲寄存器地址名称映射 位操作 讲解一下左移还有右移 比如说1010左移的话就变成了0100,可以看做是有一个固定不动的光电门作为一个边界,然后向左移动。 define宏定义关键词 #define LED0 PBout(5)// PB5 #define LED1 PEout(5)// PE5 这个是led.h里面的宏定义,语句的意思就是PBout(5)用LED0来代替了,PEout(5)用LED1来代替了。 上述图片的操作经常用在书写头文件里面 typedef typedef就是给类型起一个别的名字,因为一般变量类型的的名字很长,真正书写起来不方便。 结构体 同一个类型的可以用数组,不同类型的可以用结构体,使得程序的扩展性强 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE) 比如说这个结构体语句,如果不是这么书写的话,那么就需要一条一条的去定义。 static 使用static声明变量的话,它的值不会在被调用后擦除。会一直保留。 第19讲 STM32时钟系统精讲 1.0时钟系统框图讲解 在以后配置固件库有什么疑问的话也可以再去查看时钟树来加深印象 这个时钟系统的话主要去看那个手册吧 * 第24讲 中断优先级管理 什么是中断挂起:中断挂起就是在执行中断的过程中,有一个高优先级的中断来打断了,就会等待高优先级的中断执行完毕,然后等待高优先级的中断执行完。 第25讲 串行通信原理讲解 我认为的串口与一般的IO口的区别在于串口除了可以用作普通的IO口还可以用作通信功能 同步通信的话,带时钟信号传输,SPI IIC通信接口 异步通信的话,不带时钟同步信号,UCRT,单总线 注:UART,单总线,SPI,I2C属于通信标准。我认为是一些通信协议就是这个,你像5G 4G这些也都有通信协议,只不过那些很大也常见。 异步通信要求传输的波特率相同。 为什么串口通信双方的波特率相同? 波特率就是通讯的速率,只有波特率一致的情况下才能保证接收方和发送方获取同样的数据。和两个人以相同速度跑步,互相看着就是静止的一样。如果速度不匹配就会有误差。 stm32的串口通信接口: UART:通用异步收发器,USART:通用同步异步收发器 一般而言,大容量的STM32F10x系列芯片,包含三个USART和两个UART 串口设置的一般步骤如下 1.串口时钟使能,GPIO时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1);使能函数是这个,抓住RCC APB2,还有内部的一些参数 2.串口复位 比如我们要复位串口 1,方法为: USART_DeInit(USART1); //复位串口 1 3.GPIO端口模式设置 这个GPIO模式配置,我认为是配置一些像端口速度,哪一个端口比如PA1,还有一个 4.串口参数初始化 void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct); 5.开启中断并且初始化NVIC 6.使能串口 USART_Cmd(USART1, ENABLE); //使能串口 7.编写中断函数 开启串口响应中断。 有些时候当我们还需要开启串口中断,那么我们还需要使能串口中 断,使能串口中断的函数是: void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState) 第27讲 串口通信实验详解 串口操作的相关库函数 串口配置的一般步骤 第28讲 外部中断实验-EXTI 1.外部中断概述 32的每个IO口都可以外部中断输入 F4的中断控制器支持22个外部中断/事件请求,F1则是支持19个。 F4的话: EXTI线0-15是对应的外部IO口的输入中断 EXTI线16:连接到PVD事件 EXTI线17:连接到RTC闹钟事件 EXTI线18:连接到USB OTG FS唤醒事件 EXTI线19:连接到以太网唤醒事件 EXTI线20:连接到USB OTG HS唤醒事件 EXTI线21:连接到RTC入侵和时间戳事件 EXTI线22:连接到RTC唤醒事件 F1的话: EXTI线16:连接到PVD输出 EXTI线17:连接到RTC闹钟事件 EXTI线18:连接到USB `唤醒事件 每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边延触发),触发/屏蔽,专用的状态位 每一个中断线才可以产生中断请求, !!同一个时间只可以有一个IO口映射到中断线,现在来讲有16根中断线,但是有112个IO口,那么配置的时候就是:EXTO配置PA0-PI0,同理EXTI15配置PA15-PI15,如果以后每组IO口数量增多的话就继续 假如说PA0映射到了中断线0,那么中断线0就可以产生一个中断请求,然后我们就可以设置相应的触发方式(比如:上升沿触发,下降沿触发,边沿触发)以及使能 附录:中断使能是前提条件(控制作用,),中断标志后续条件,只有中断使能置1, 才有可能有中断标志产生,不然其他条件即使存在,也没法执行到中断标志,因为其他的条件和中断使能是与的关系,必须所有条件成立,才有中断标志产生。 边沿触发:就是上升沿下降沿都可以触发 中断服务函数 **2.外部中断常用库函数 1的话我认为是配置线1映射PA0还是PB0 2的话就是配置是上升沿触发还是下降沿触发 3、4的话根据字面意思推断就可以 3.手把手用外部中断写按键实验** 外部中断函数配置的一般步骤 这些底层封装STM32F4都已经配置好了,所以就还是类似于MATLAB,只需要进行调用就行了,而对于32来讲的话,那些LED.C,还有KEY.c都不需要管,只需要自己去调用,其实我们在写C语言的时候,比如说调用《stdio.h》其实就类似于在32里面调用那些头文件,之前王立华老师讲的去参加蓝桥杯国赛的时候说没有将DS18B20的写出来,我认为就是没有写出那个头文件来。 第31 通用定时器基本原理讲解 1.三种定时器区别 现在使用的这个板子,F407ZG系列有12个12位的定时器,有2个32位的定时器,而那个F103只有8个16位的定时器 高级定时器(TIM1 TIM8 ) 通用定时器 (1)(TIM2 TIM5) (2)( TIM3 TIM4) (3)(TIM9 TIM14) 基本定时器(TIM6 TIM7)常用来做简单计数定时 2.通用定时器特点 通用定时器概述 计数模式 溢出还有下溢的事件都可以触发中断 定时器的工作过程可以分为这几个部分 最上面的就是类似于时钟源的部分,是用来产生一个 中间的话实际电路 最左下的话是输入捕获 最右下的话是输出比较 定时器的级联,一个定时器的输出可以作为另一个定时器的输入 3.通用定时器工作过程 第36讲 OLED显示实验 OLED与LCD相比的话,LCD需要背光,OLED不需要背光,,但是以目前的技术,OLED的尺寸难以大型化。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
652浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
522浏览 3评论
539浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
508浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 12:06 , Processed in 0.656954 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号