掌握C语言之后,接着就是去 驱动一些常用模块


 逐飞已经出了简单的视频,你需要看懂他在干什么。

基本上所有模块的使用过程都是 先初始化,然后调用相关函数,循环执行。

【逐飞科技】STC8G2K 核心板与智能车常用模块搭配使用视频教程_哔哩哔哩_bilibili

看完视频,就可以打开逐飞的库,里面有一些例程,首先把红色的这些例程要看懂,尝试执行一遍,然后自己写代码,执行出逐飞视频里的效果。

逐飞开源库例程

文件夹名称 中文命名称 简介
1-LED Blink Demo LED闪灯 P5.2作为LED的输入,当P5.2为低电平时,LED亮
2-GPIO Input Demo GPIO输入例程 将P04连接GND,可以看到LED 灭掉
3-EXTI Demo 外部中断 边沿触发INT0_P32中断LED 就会被点亮
4-PIT Timer Interrupt Demo 周期中断例程 1秒钟LED翻转一次
5-ADC Demo ADC输入例程 使用在线调试可以查看ADC数值
6-PWM Demo PWM例程 脉宽调制
7-Decode Demo 编码器解码 使用带方向的编码器,解码
8-UART Demo 串口例程 串口输出0X1E
9-Printf Demo printf例程 printf重定向,输入字符串
10-Specifies_Variable_Or_Code_Location_Demo 变量存放区域例程 里面讲解了RAM和FLAH的大小和分布
11-EEPROM Demo EEPROM例程 EEPROM读写操作
Libraries STC8H8K64U库 STC8H8K64U开源库

下面我简单讲一下每个模块的作用,有一个简单的了解,具体深层次的内容,在CSDN上搜就行了。


高低电平 0/1 

在LED和GPIO例程里,给LED=0,LED=1,实际就是对应引脚进行了高低电平的转换,

引脚(例程是P52)与GND 之间的电势差就从0变为3.3v(或5v)导致LED亮灭,


PWM

pwm脉宽调制,实际上就是一个比例问题,

假设最大占空比DUTYmax=10000,如果给占空比duty=5000,

则引脚与GND的电势差=(5000÷10000)×5V=2.5v ,这里是简单举个例子

在CSDN上搜PWM,看大佬们的博客,能让你们彻底理解,

这两个博客讲的都挺好,你简单看一下,知道PWM怎么回事,然后会用就行

STM32——PWM知识详解_笛卡尔的叹息的博客-CSDN博客_stm32pwm

PWM原理 PWM频率与占空比详解_Z小旋的博客-CSDN博客_pwm


 ADC

ADC就是数模转化,A模拟量,D数字量,

例程中,就是通过adc_once(ADC_P11, ADC_10BIT)这个函数,   

进行ADC采集,把电压这个模拟量,变为直观的数字量,

简单来说就是把电压变成一个数,方便你去进行数据处理。

这在电磁和充电组别应用及其明显。

看一下这篇文章方便理解

什么是 ADC - 模数转换器 - 知乎


编码器

编码器解码 顾名思义 就是将编码器的状态解算出一个数

和ADC差不多,都很好理解。

在智能车中,编码器大部分与后轮(驱动轮)结合,这样就可以知道当前的车速。

【平衡小车制作】(三)编码器讲解(超详解)_鲁乎乎的博客-CSDN博客_霍尔编码器和光电编码器的区别

编码器分类及原理和测速应用(含代码)_清雨夜Cll的博客-CSDN博客_编码器程序

一样,看看这两篇文章,知道编码器是什么就行,

像这篇文章,他讲到了写配置编码器的函数,暂时没必要看,逐飞的库里写好了。

如果对自己要求高一点,你简单看看,明白作者在干什么,到时候你自己独立写配置模块的函数,知道怎么个流程。


 中断

中断就是达到某个条件就去执行

如定时器中断(常用),设置中断周期为5ms,那么就会每5ms执行一次中断里的程序

串口中断:串口收到数据,就执行中断里程序

我说的比较浅显,具体需要搜一下大佬们的解释

什么是中断?中断的作用?_惬意的下雨天的博客-CSDN博客_什么是中断

中断的概念_typhoonzb的博客-CSDN博客_中断的概念

[7-1] 定时器_哔哩哔哩_bilibili

中断比较重要,建议多看看


 UART串口

UART起到通信(数据传输交换)作用

TX发送,RX接收,用三根线就可以让两个板子通信,用一个usb转ttl就可以让板子与电脑通信,用无线串口就可以无线通信。

[8-1] 串口通信_哔哩哔哩_bilibili

一篇短文让你彻底理解什么是串口通信_Neutionwei的博客-CSDN博客_串口通信


EEPROM

EEPROM即带电可擦可编程 只读存储器,即可以写数据,又可以读数据,特点是掉电也能保存数据。

实际中我们可以写人机交互界面写入调车参数,修改方便,无需一次次下载代码。

STC16F不自带EEPROM,STC32G自带EEPROM

EEPROM的学习和使用方法_Bornpride的博客-CSDN博客_eeprom

深入理解EEPROM使用_大牛攻城狮的博客-CSDN博客_eeprom怎么写入数据

串口通信和flash/eeprom在代码上实现过程差不多,

因为串口通信是一个字节 一个字节(8位) 地传输,flash/eeprom的读写也是8位8位的,具体怎么用,我后面应该会写,