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

串口调试技巧

可以将调试时会用到,但实际演示是不需要用到的代码用

#if xxx

  //这里放调试代码

#endif

xxx是 一个宏定义,如果等于0则不编译相关代码,如果为1则编译相关代码

TFTLED触摸屏

FSMC:静态存储控制器

将TFTLCD当成SRAM使用

F4的使用(附带其他系列)

HAL库可移植性高,即使是不同系列,大部分代码都相同,重新在cubeMX上设置一下即可。

对不同系列的stm32进行 编程,相应的板级支持包需要改动,所以在电赛之前,如果想要用F4的话,就需要用cubemx对相应外设重新设置一遍,以保证想用的时候可以快速移植。

因为用的是正点的板子,直接移植正点原子的例程代码也行。

F4_DMA

从F4系列开始,多了一个FIFO功能。如果选用M To M, 则必须使用FIFO

例如F4上的串口比F1不只多了FIFO功能,还多了突发传输功能和 多了通道的选择

使用了FIFO之后,发送端和接收端的字节大小就可以随意匹配。

如果要编写DMA的P To M的话(例如串口),把上面那个Transmit改成Receive,并且整行都放到串口接收中断里面去。

F4_I2C_EEPROM

F407和F103的I2C功能框图相同,所以设置方式也相同。

F419之后会多了滤波器(filter)的配置选项

其他更加细节的EEPROM知识可参考B站野火HAL视频教程的“I2C-读写EEPROM

光耦保护与隔离

通用输出口采用光耦隔离NMOS管,可以输出大电流,上拉电阻为3.9K时,可以兼容3.3,5.5, 12., 甚至24V的输出电压。

使用EXVCC和EXGND时要另外供电,可直接驱动小功率的直流有刷电机等外设。

即IO口的电平高低与 板子上的实际输出时相反的。当输出低电平时,输出电压与EXVCC相等。

YSF4_Pro上总共有12路的光耦隔离输入,每个都可以直接24V的电压信号输入

引脚检测到低电平时表示有输入(光耦输入端电平越高,相应引脚检测到的电平越低)

F4的高级定时器

可以用高级定时器产生3对6路的互补PWM输出,可以用来驱动三相电机,对应直流无刷电机的六步换相

外部中断触发定时器消抖的按键检测方法

一般的系统用外部中断加延时(浪费CPU资源)的方式其实也够用来做按键控制了,直接用定时器消抖并不断轮询扫描(代码较复杂,移植时需改动较多)也是一种方法。但像是设计到实时操作系统之类的通过按键来进行人机交互的时候,其实以外部中断触发获取定时器节拍消抖的按键检测方式,才是最灵敏可靠的。

stm32f1按键检测使用外部中断以及定时器延时方式去抖_键键键键盘的博客-CSDN博客   (参考链接)

串口控制直流减速电机

关键函数:deal_serial_data( )

将野火例程的关键函数 移植过来后,用xubeMX重新设定生成新的初始化函数,记得开串口接收中断(在 MX上勾选串口全局中断),并将在新生成的初始化代码中编写开启串口接收中断),并移植串口中断服务函数,在循环中调用deal_serial_data()即可

该方法只是最为基本命令控制,还没用到协议对数据进行包和编写解析数据包的函数。

deal_serial_data( )用到了atoi函数,所以得记得添加上stdlib.h 头文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值