粉丝41获赞427



大家好,这里是一起学单片机这节视频呢,给大家一起研究一下 s t m 三二 q 八 a d e 这款软件啊, 这种软件就相当于我们原来的 st m 三二 m x 升级版,那么它是整合了编译器,那么进行图形化编程配置以后了呢? 那么就他这个直接用这个软件里编译环境就可以进行编译了,支持 c 语言和 c 加加,对吧?那么就不需要原来我们用的 q 五这个软件来进行编译,进行代码编写,对吧? 那么这样的话比较方便,那么相当于升级整合在一起了,我们把它打开看一下,因为最近都在研究这个啊,所以别的没没有精力更新别的事情了,然后再加上手头一些版在做,所以这个其他的就没有没有时间去更新了,所以现在 刚好这段时间因为隔离在家,所以有空就给大家一起再拍拍视频。那么 stm 三二 qbid 这个软件呢,打开的时候他可能要去联网更新啊,所以说相对来说比较慢一点, 那么可能是更新一些库函数,包括这个芯片型号的更新好,基本打开了就是这样。左边这个就是项目数啊,就是项目管理器,就是你以前做的一些东西啊,右边这个窗口呢,你可以自己去调,这边主要是个变异环境了,就是我们代码段, 那么底下也是你自己调,这边就是在编译的时候会显示一些状态啊,那么重新新建一个,那么点击文件新建,对吧?我们选 stm 三二 project, 那么他会弹出让你选择芯片的型号,这个过程也是相对来说比较慢的啊, 那么他在初始化,你这个目标就是你选择芯片选用哪一款好,那么这个支持的是比较比较多的啊,因为他不断的在更新,所以从啊 f 零三一直到 f 七啊,这个比较多的型号是非常多的,那么选择你手头有的,一般我们手头有不都是那个 s t m 三二 f 幺零三系列嘛,那么比较便宜的就是 f 幺零三 c 八 t c 八 t 六这款芯片,对吧?因为网上很多就是集成的这个板子一起卖的。 哎,这个这个地方怎么有点问题, 我得关掉一下了,这里不知道为什么哦出来了,哎呀,怎么会这么慢,重下一下啊。 嗯,可能跟我的网有关系啊,不知道为什么现在这么慢。你这边应该是可以选择芯片型号的,你要填进去就行了, 或者你自己拖拉去找,现在相当于啊死在这里了。好,出来了,那么我们在这里输入你的单片机信号,你手头是 stm 三二 f 幺零三 c 八,对吧? c 八, 我们选择那么点中你这个芯片,那么这边有芯片详 细的描述啊,对吧?他有那些资源都在这里,然后我们点击下一步,那么这次我们来新建就是一个 test 吧, 我们做一个基本的配置,然后做一个基本的使用就行了,那么我们选择的语弦是 c 加 c 语言,对吧?然后这边目录的话,不建议用这个默认的目录啊,你可以自己新建一个目录,那么我这边都是放大 f 盘自己新建了 s t m 三二 i d e。 比如说我们新建个文件夹,就是每一个项目他给你要新建一个文件夹,那我们这里的选择就是就就叫 test, 选择好,你点击完成, 那么这个 i o c 就是它的图形化一个界面啊,就是一个芯片的外形,包括时钟数啊,一些配置啊,都在这里啊,让它生成这个基础的这个框架代码的框架, 那么这个的好处就是,呃,他生成了基本的配置的框架,包括一些你需要的功能的这些初始化,那么你就可以重点关注在你的功能上完善了,对吧?那么这个是比较省力的。 再强调一点,你这边看到的这个是裸芯片,对吧?你要跟你的实物去对一下,比如这个芯片的银角,你这个实物里可能已经被比如说布特林银角或布特一银角占用了啊,那么你在这里在配置的时候,你会发现,哎,运行为什么不成功?程序是不是有问题?或者 软件有问题?其实不是,你要看一下你的硬件,你这里看到的是一个裸芯片,而你手头拿的肯定不是个裸芯片,对吧?可能是一个最小系统版,所以有的银角已经被占用了,你在这里再去配置的话,那么硬件上是产生冲突的,对吧? 你软件运行的时候,肯定是因为硬件跟你现在的软件产生冲突,所以功能会不正常,大家千万要注意这一点。好,那么在这里头,比如说我们就做一个实际的例子,我们让 pc 十三这个引脚,因为这个 pc 十三在这个最小系统版里啊, 它就是一个连接了一个 led 灯,对吧?我们让这 led 灯每过五百毫秒亮灭一次,我们让它翻转一次,对吧?那么我们先用最简单的方式,我们不用定时器,我们就用延时的方式,对吧?我们来做个最简单的例子给大家看一下,那么哪 些东西是我们必须要配置的呢?首先我们要打开最关键的,我们让这个时钟数,啊啊,先不要打开时钟数,我们先打开最基本的这个 rcc, 就是我们的时钟时钟你要选择外部的精震,对吧? 那么包括我们的低速时钟,低速的外部这个这个 rtc 时钟,你也可以选择选择好外部的竞争,因为 rtc 一般是外接三二二七六八这个这个竞争,对吧?然后我们的外部时钟这个竞争呢?是八兆的, 经过 pr, 然后这个背屏,然后再分屏,提供各个总线上的时钟,对吧?好,那么这两个是这一步是一定要有的,否则你芯片不会工作。然后我们再把 clock 这边有个时钟配置,看到吗? clock configuration 这里,那么这里头你可以看出来他 这边有个设置的最大值,那么你不用去逐个去配置啊,你只要把这里填到七十二,你按回车,那么芯片会提示你是否让它自动来选择,那么我们来点击 ok, 那么芯片会按照这个时钟最大值来配置每个总线上最可能得到最大的这个时钟,比如说这里看着了 h, c, l, k, 还有 a p p 一, a p p 二,它的适中可以看出来是不一样的,对吧?它是得到它的能得到的最大值,我们的外部精阵呢?是八兆, 好,这始终配置完了。另外一个,如果你要烧路,你是通过这种呃,两线制的,那么串串行烧路,这里的串行烧路不是指的这个我们的,呃,这个串口烧路啊, 是 u u a r t 这个串串行口烧路啊,那我们是点击这个 serial y ser serial wire, 对吧?这里头就会占用了 p a 十四和 p a 十三这个引角, 那么这个就是用到 st link 了这个烧路烧路器了,这烧路器大概十几二十块钱一个,那么他要占总共这个,占了这两个音角,额外再加两个电源音角,那么是要四个音角了, 那么不是不是占篇机的这个创口啊,不是 p a 九 p a 十这样典型的创口啊,这叫区别开, 这是串行烧路,用 st link, 这个一定要点击好,如果你不点击烧路的话,你就必须要用串行口来烧路了,那么这时候就要做一个 p 布特菱形角的切换,对不对?首先切换成高电瓶,再切切换成低电瓶, 切换的高电瓶,那么做一个这个布特灵的切换,这个比较麻烦,你要手动去做一次,而且你要用另外一个软件,而你直接用这个 serial wire 就是两限制烧路的话,你在这个编译环境下就直接可以对芯片烧路,同时串口 也不占用啊,也就说你正在打印创口信息时候,你要更新芯片的程序,你直接点击就行了,而不用把这个原来那个软件的创口关闭掉再切到创口啊,这个相对来说比较麻烦,那么我们一般选选择这样,但切记你一旦选择的这样啊。呃,开机开启了以后, 如果你没有开启而强行的还要那样使用这个串形口在烧路的话,用 st link 烧路话,你是会发现连不上了,对吧?同时这个芯片相当于一个夹的锁死状态,你再用这个,哪怕你重新再 配置好了,用穿心口烧路也是烧不进去的,这我已经测试过了,那么解决的方法就是要用串口烧路一次,然后芯片才能解锁。那么如果你当初这个配置忘了,那么你一定要注意,这芯片属于假死的状态了,你一定要用串口, 就车型口烧路一次以后才能重新用我们这种四线直烧路啊,这个切记,所以千万不要丢这位,这不丢的话你会比较麻烦,当然芯片是不会坏,但是比较麻烦,你要额外做几部工作。 好,那么我们来把再配置 gpi 口,那么我们让 pc 十三这个口,你点击左键,那么它有各种的功能,对吧?一般这个 pc 十三除了是这个输入输出的话,它本身还做了 rtc 的这个 侵占引脚,侵入叫 tamper 引脚,对吧?那么我们一般把它做,我们做输出,如果我们让显示 led, 那么在这里头我们把它做一个标识作为 led, 然后这个作为标识,这个是非常重要的。这 user label, 这个一定要用啥? 这个就相当于我们在移植环境中的一个红定义,那么这个银角你当然如当以后银角进行变化,我不想用 pc 十三了,我想比如说用 pb 十二的银角做 led 的,那么你这个在配置里头,你只要把 pc pb 十二 给他点至 altpud, 同时你在这里头把它也改成 led, 那么原来这个引角你把它取消掉。在程序里头是你不用做任何的更改,因为程序里是一个红 定义,在这个点点 h 头文件里做了个红定义,他就是根据你设置这个,你设置的这个 user label 来进行定义的, 那么这样的话,你就不用手动去改每一个程序,你跟 p c 十三有关的这个引角都要去改,对吧?这样的话太麻烦了,那么这就是这个好处,所以这里头这个 user label, 你每一个 l 口 建议大家一定要做优色类包,这个也不费什么事啊,但是在红定义里头就会直接作为了红定义程序的移植或者 l 口的变换是非常方便的。 好,那么我们现在只是做最简单的让 p c 十三这个引脚进行翻转变化,对吧?别的功能我们暂时不用浏览一下,那么这边是 a d c 一和 a d c 二这个端口,对吧?计算器 配置还有实时适中,还包括我们四个定时器,那么 t m 一是这个高级定时器,二三四是普通定时器,然后关于这个连接 connectivity, 那么它有看总线,两个 iphone c, 两个 spi, 三个创口,还有个 usb 啊,那么我们把创口一要用上,因为创口一我们常用来打打印一些状态数据,那么这里选择翼步,翼步模式,它就占单片机的两个 l 口, 可以看出来 p a 九, p a 十,对吧? p a 九是 t x t p a 十是 r x, 然后底下的这些配置呢?我们就把它默认,我们用最高的拨头率幺幺五二零零,然后八位, 然后没有肌肉药健胃,呃,教研位,然后是移位停止位,对吧?然后中断我们不用打开,包括 dma 功能我们也不用,对吧? 中断我们不用去开,我们不进行中断,我们直接输入输出,然后其他的银角他会自动的配置,对吧?你这里头不用去动,这个是非常方便的,可以看出来,你想改成九二零零,这里直接点九二零零九,他会自动帮你配置。好。 好,就这么简单。那么窗口配置好了,一个引角配置好了,我们再看下面的这个计算功能呢?是,这里是 crccrc, 就相当于一个,呃,传输的教验啊。 那么中间键呢?中间层可以看出是两个操作系统,一个文件系统和操作系统的,那么 freertoy rtos 也是支持的,对吧?好,我这个暂时功能我们用不到, 那么 clock 我们配置好了,那么千万还要注意这里头一个 program manager, 项目管理管理,嗯,项目管理器这里啊, 一定要注意什么呢?我们注意看一下啊,这个 code generator 这里我们要点击一下它,我们要把这里头要点击个声被外设的初始化,单独生成配套的点 c 个点 h 文件,如果这里不点的话, 那么所有的点 c 文件,点 h 文件都会堆到命函数里头,会导致你的命函数比较臃肿, 那么你点击的话,他就会单独生成的,比如说 gpio 会有个 gpio 点 c, gpio 点 h, 比如你又开出了看总线有看点 c 看点 h, 他会单独生成的,所以这个一定要勾选啊,那么其他的你保持默认好了,有兴趣可以仔细看一下。 那么这里头一个 copy only necessary library files 就是指 copy 必要的 这个库函数文件,因为你这些外设啊,他都要库函数,对不对?操作库函数,你原来的话,如果你没用到的话,这些库函数他就不靠,靠过来了,那么在你编写程序的时候,你的程序就不会那么大,对吧?那么你就占个 flash 空间就会比较小, 只把你需要的部分,比如说我现在只用了 gpl, 它就是把 gpl 这部分的库函数要一靠过来,我们进行使用。好,其他这部分是个低功耗, 这个能号公号计算软件啊,这个我们不用去管他,那么这我们基本功能完了,那么你可以点击这边的这个齿轮,或者这边这个点 c 五都可以啊,他就会帮你生成基础的这个代码,我们点击一下 c 五就可以了。好,他在生成啊, 这个是我原来打开的,我都把它关掉。 好,可以看一下了啊,那么啊,这个不是啊,这就是刚才我们生成的,我们来看一下时间,对的啊,包括我们的 它加载了哪些呢?头文件,它生成了命点 h, 那么这里头就是包括时钟啊,可以打开看一下。 那么加载了时钟啊,加载了这个 hell 库啊,它本身的库文件,那可以看出来这里头刚才我们定义了什么 led, 那个 我们设置了一个 gpl 引角的这个这个标识对不对?你可以看出来,在这里在命函数里头,它就会自动 动的把 led 的屏,对吧?做了个红定义,作为 gpl 屏十三,然后 led 的 gpl port 就是 gplc, 那么是不是很方便啊?就这样相当于红定义,你以后改成 gpl, 比如说 gplb 的十二引脚,那么这个你可以看出来红定义这个引脚是不变的, 那么软件会自动会帮你把后面的这个数据变掉,这样的话在主程序中你直接使用这个定义,是不是主程序你不用做任何的更改啊? 不用,你主程序就再去把这个每一个音角,比如从 g p i o 十三改到十二,然后音这个端口从 b 改到 c, 从 c 改到 b, 是吧?这个很方便,这个一定要用上,然后大概浏览一下。那么还有注意的时候,你可以大家看一下,这里的 有很多的这个 user code, begin user code and 这种啊,这个一定要大家看一下,这个其实很好理解,那么在这里头的东西啊,你自己添加代码一定要写在这里中这个中间,因为你有可能 回去再重新修改个配置试试。你要重新再生成这个,这个点击保存,他会自动重新生成这个代码,对不对?初始化的代码如果你不写在这里的语句,他是会被覆盖掉的,就是没有了就丢失了。我们可以做个实验给大家看一下。 那么我比如说我在这里我定一个变量, you eat 啊, 比如说 flag 疫苗,我们定义这个边列啊,然后我们在,我们不在这个 框架中,比如说我们在这外头,对吧?定一个变量不是两秒一个变量,好,我们先保存一下,这时候由于我们配置外头要增加新的功能,比如说我们要在这个按键,我们增加一个输入,对不对?我们这里添一个 g p i o input, 好,那么在 g p i o 这里头 p b 十三就多了,对吧?我们这是做个标识,我们设置为 k, 那么我们给这作为一个上拉,这样的话我们按键按一下的时候变成低电瓶,这样会检测按键变化。好了,这个配置完了,我们重新点一下,我们这里点了个保存, 他会把我们这个配置又重新加载进来。 好,大家看一下啊,我刚才写在 这个 user code, begin and 中间的语句是保留的,而我们刚才写在外头这些语句丢失了, 对吧?这个不针对于变量,你自己写的函数也是这样的啊,你看出他有很多空余的这些地方,你变量啊,函数啊,同定义啊,加载头文件啊,你一定要写在他规定的范围之内,比如你看这里头 我们的死循环, well, 函数看到吗? user code, begin, wire, user code and wire 一定要写在这当中啊,如果你写在空白的地方,不是写在这个 begin 按到当中,你只要改变了外头的配置,那么势必会丢掉,对吧? 这是比较痛苦的,你就不得不重新再写一遍,千万要注意啊。好,那么这些视频先 到这里吧,因为比较长,后面我们再继续把这 led 灯让它闪烁起来,同时我们用逻辑分析仪抓一下,这这节就到这里那么几个基本的配置,包括重点给大家讲清楚,大家可以动手实验一下,非常简单。好,欢迎大家对我的视频评论转发点赞,谢谢大家。

首先创建一个 app 工程文件,选择对应的芯片,这里选用 s t, m 三二 c 八 t 六 r c c。 选取外部时钟,选择 debug, 如果不选不能烧路和调试,选择时钟远, 将外部高速时钟配置为晶体陶瓷斜震器。选择串口,设置里面的参数,这里配置串口。三, 选择自己使用的银角进行配置,这里配置成 a o 输出,我们可以设置 g, p, i, o 的一些参数。 注,设置系统时钟, 填写生成的工程信息、工程名称、存放位置等 id, 选择自己常开发的平台,设置一些工程配置。 生成代码成功的话会出现提示。我们进入工程可以看到我们配置的内容代码都已经帮我们生成,我们可以在此基础上进行我们的后续开发了。更多精彩内容,欢迎持续关注我。

我们来看一下利用这个 sd m 三二 q 八 m x 这个代码修声器啊啊,我们用它来生成 p w m 波形来控制电机转动 啊,首先呢这个软件啊,大家安装自行安装啊,安装之后呢啊,我们一开始呢是从这个 mcu 开始我们的工程啊,因为我们不是用的他的这个 s c 报的啊, 我们就点这个就可以了啊,因为我这个工程已经建好了啊,所以呢这个建工程的过程我就不再演示了。嗯,当然呢,这个也比较简单啊,点进去之后呢,大家就可以这个啊,根据你使用的 mcu 的型号去选啊,就可以了啊,命名好工程的这个名字啊,他就可以了啊,在这里呢我们就不演示建的过程了,这是我建好的工程啊, 直接在做配置啊,首先呢你用定时器的呃时候,其实你在使用所有的功能的时候啊,都应该先把啊时钟配置好啊,比方说我们这里的二 cc 啊,我们选择的是 呃,叫 h s e, 叫高速外部适中啊,因为我们的这个核心板上啊,有一个精震啊,我们现在用它是做这个时钟源啊啊,这个选好了以后呢 啊,这里我们选的 crystal, 对吧,这个精镇啊,选好了以后呢,我们在这个 cloc configuration 里面始终数的配置里面,我们在这里选 hse 啊,大家看外边是接了一个八兆的竞争,对吧?过来之后呢,在这里啊,我们先这是分频的,我们先不分频就八兆进来啊,我们就用它,那么在这里呢倍频,九倍倍频啊,九倍之后 八乘九就剩七十二了,对不对啊,七十二过来之后我们这里也不分平啊,也是让他七十二,因为我们就会选用最大的时钟频率就可以了啊,在这里呢,大家要注意,这里呢,你至少要量二分频,为什么呢?你选一的话 啊,这里出问题了啊,最高是支持三十六,对不对啊?所以呢,我们这里这个二分频,二分频之后,大家就看啊,每一个外设都有了自己的时钟远或者时钟频率了啊,那么我们的定时器大家看啊, 这个 a p p 一 time 啊,挂在 a p p 一总线上的定时器啊,始终频率是七十二对吧?挂在 a p p 二总线上的这个定时器,它的始终源也是七十二兆啊,相当于我们所有的定时器的 始终。现在都是七十二调啊,这里就配置好了,对不对?那么配置好了以后,我们来看我们的 timer 啊,在这里, 那就我我是之前设置过了啊,比方说我们用的是 tam 二和 tam 三啊,对应的银角呢,就是 time 二呢,呃,通道一和通道二就是 p a 零和 p e 一,我们用的啊, time 三呢,我们用的是,呃, p b 零和 p b 一啊, p b 零和 p b 一。那么配置好以后, 大家看,我们在这里用的是比较简单的啊,一个是通道一的 p w m 生成功能,还有一个呢是二的 p w m 生成功能, 这是选好了啊,这是 tom 二的,这个选了两个通道用的啊,然后呢,主最主要的是下边,通过下边这些参数的设置来设置他的波形,就是 p w 波形的周期啊,以及初始化的占空比啊。呃, 主要涉及到的参数呢,一个是这个预分频啊,就不是 c 了啊,这里呢我选了七十一啊,实际上呢,呃,他算的时候是按照七十一加一就是七十二去算的啊,然后这里大家看这个啊,叫 counterparia 的啊,就是,呃,是决定他的 呃周期的啊,是决定它是周期的。我升了九十九啊,实际上零到九十九是一百,对不对啊?那么这样生成波形的周期是多少呢?我们的时钟是七十二兆,等一下我们算一下啊, 那记住我们的时钟呢,就是七十二兆,我们刚才设置好的,对吧,七十二乘以十六次方啊,赫兹对吧,然后呢,除以预分频, 我们设置是七十一,当然你这个可以设置成零,不分屏也没关系啊,加一对吧,再除以谁呢?再除以我们那个 p r 的 counter, 那就是九十九,加一 对吧,谁让你算下来呢,正好是多少?七十二兆除以七十二是一兆,一兆除一百呢,正好是一万,对吧?十 k 啊,这样呢,我们就得到一个十 k 赫兹 频率的 p w m 波形,那就是一秒钟呢,他有一万个周期在这个波形里,对吧?啊这是算他的 通过设置的三个参数啊,来设置我们 pm 波形的频率啊。其实频率和周期其实是一体两面嘛,对吧?不为例子, 互为倒数,对不对啊?然后呢,还下面还有一个呢,这里我们可以用 plume mode 啊,模式一。然后呢,这里啊是设置它的 pose 啊,设置它的叫占空。呃,可以说是设置占空笔吧,也就设置它初始化的占空笔啊,初始化的占空笔啊,比方说我们现在最最大是九十九嘛,是吧?最大是一九十九,那你这里你可以给它设置成啊三十啊,或者二十 啊,都可以,对吧?其他的呢,我们不用动啊,其他的不用动,那这样呢,他有两个通道,你比方我们这里设置三十啊,这里设置个零啊,那么他就会啊,因为有一个是低电瓶啊,有一个是有波形啊,这样呢,他的轮子就会转动起来啊,就会转动起来啊, 如果你想让它反转,那这个式的成语,这个式的成啊,一定的数值,它有波形,那就是反过来反方向的转啊,当然这个呢,我们先实现它动起来啊,至于让它反方向的转,正方向的转 啊,或者让他转的速度是多少,我们后面还要写一个函数来实现这个功能。这里呢,我们先给他给定一个占空笔啊,让他转动, 这是 tom 二 tom 三呢,其实道理是一样的啊,你比方我们 tom 三选用的是传到三啊,传到四啊,其他的设置都是一模一样,因为我们两路呃, pwm 啊,一定是让他要同一个频率啊,都是十 k, 对吧啊,当然你如果需要一 k 的,你这里可以设置成一千, 对吧,你需要这个更大的啊,对,需需要 e k 的,你再设成一九百九十九啊,你需要更大的,那你就改 这两这三个值就可以了。那当然时钟定了之后一般不会改啊,主要是改这两个值啊,通过我们的这个计算方法来算就可以了啊。那么好了,等了这两个设置完,呃,同样呢,这里啊,你也可以设置成啊,不要说三十二十啊,这个没有问题。 那么设置好了以后啊,我们使弄好了啊,这个定位界设置好了,那么你就点这个啊,当然这个 project manager 大家不要忘了啊,起工程的名字,工程存储的地方,对吧?啊,还有一个需要注意的呢,就是,呃,你是用的哪一个 编译 i d e 啊,你比方说我这里啊,我用 client 啊,那就要生成 s m 三 q 八 i d e 的工程啊,你会?当然你要用这个呃 q 八 i d e, 那肯定 也要生成这个工程,那你如果是用的 q, 那你就选这个 m d k r, 对吧?啊,嗯,根据你用的这个 i d e 来选择这个工程的类型啊,图称啊,这里呢,我们啊用用 cloud 演示的话,我们就选这个啊,其他呢,你可以先不动啊,我们点 generate code, 这样呢,代码就生成了啊, 大家要注意啊,这个 q 八 m x 它生成的是底层驱动啊,它并不是万能的,我这个所有的功能通过它都能生成啊,不是,它只是功能的驱动可以生成啊, 生成以后呢,我们这里工程呢,其实就自动更更新过来了啊,看看,这是闷函数对吧?啊,呃,生成以后啊,这些都是呃系统 生成的代码啊,初始化的代码,他们要注意啊,如果我们想写用户代码,我的建议呢?也不是我的建议了,就是根据我们这个 呃代码生成器的特点啊,把我们的用户代码一定要写在这个 user code begin 和 user code end 之间, 写在这里有什么好处呢?写在这里呢,如果说啊,我想去改动,比方说我本来就用了 tom 二,对不对?我不想用 tom 二了,我想改成 tom 三,对吧,我在这里设置好,设置好以后呢, 我点生成我们的用户代码是不会受影响的,大家看这这个四行代码是我昨天晚上写的啊,实际上我点刚才点生成代码之后,这里他是不影响的啊,一点都不影响,所以你的用户代码一定要写在优字扣的笔定和优字扣的摁的之间啊,这样呢,代码生成记生成的代码不会把你的代码覆盖掉, 那你如果写在这里,那就你比如说你写在这个引力什么什么,这这种地方他有可能给你覆盖掉了啊,你的用户代码就没了啊,所以一定要写在优字扣的比跟 n 的之间啊, 那么这四句是干啥的呢?大家要注意啊,前面数字化我们都有了,是不是?那么实际上数字化之后呢,这个 dwm 这个功能啊,他并没有给打开啊,所以呢,我们要通过自己啊携带码把它打开啊,你大家看见 star 的函数对不对啊?然后用的是他一门挤,用的是他的哪个通道,其实很简单啊,很简单打开就可以了啊,相当于我程序进来没函数, 对吧啊?初始化然后打开,那这个时候就其实就应该有波形了啊,我们一会通过试播器可以看一下啊,然后下面呢就是编译下载了啊,这个不管 用的哪个 id 其实都差不多啊,无非就是编译,然后呢下载,对吧,当然我的下载可能不太一样啊,这个你们的下载在 q 里面不是这个样子啊。呃,编译和下载就可以了啊,那我们把它下载一下。 还有一个问题啊,就是大家看一下啊,这个初始化,我们看一下刚才播的初始化啊,别让我们看随便看一个 number 二的啊, 转到定义啊,这是代码生成器生成的,对不对啊?所以你看我们设置的啊 pm 二定时器,然后预分频七十一,对吧,这个最大周期呢是九十九,对吧?然后呢我们设的一个占空比是三十,对吧?啊然后呢?这个是零 啊,还有一个是零零的啊,对吧?这个 power 四是零,对吧?所以说呢啊我们只要在图形界面中设置好了它生成的代码一定是按照图形界面来设置的,对吧?这是 thome 三对吧?一样的啊一样的啊。好了我们下面呢来给它下载一下啊。 嗯大家可以看一下我们程序下载以后啊。嗯,我们用试播器啊,试播器的这个,呃接地线,这个呢,我们接到我们的 信号输出引脚声,嗯,其实就可以看见你生成的波形 啊,我们可以看一下它的这个纸啊啊我们设置的是啊十 k 赫兹 啊,频率是十 k 合资啊。我们设置的占空比是百分之三十吗?这个丢替呢是百分之七十现在对吧?就是百分之七十空,百分之三十是这个,呃有这个波形的啊啊可以看出来啊,就是通过这个波形呢, 我们是因为是一个定时器里面两个通道,对吧?其中一个通道有波形,另一个通道呢输出低,这样子呢,呃电机呢就会向一个方向转动,对吧?啊?如果反过来啊一个通道呢是呃低,另一个通道有波形,那样的方向就会转过来,对吧?啊就这么一个 原理啊,这程序下载以后啊,嗯下载到我们的这个核心版上来了,对吧?那么我们就要做的就是连接线路啊,我们之前呢也跟大家说过了,我们这里是呃,电源 两根信号线,然后呢最最右侧的这个是 d, 对吧?然后呢这四根线我们要连接到我们的电机驱动板上, 这里啊,同样的道理呢,最上面它是电源,最下面是 d, 当中是两根信号线啊,电源和 d 是千万不能接反的啊。呃,两当中两根信号线接反了问题不大,无非就是转的方向啊,会出现这个 和你预想的不一样啊,这个时候调整一下就可以了啊,但是电源地是千万不能接反的啊,所以呢这个我们接好了,然后呢我们的电机啊,我这里用了一个电机做实验啊, 我们电机连线啊,接到我们的这个这个驱动板上来,然后呢这个呢是我们的驱动板的电源接入啊,大家可以看,我做了一个这个 啊,保险丝做了一个开关,对吧?这个做一个简单的保护,然后呢这个电源的接头,我们接到我们的电池上来, 然后呢把我们的这个电池接到我们的 转接板上啊,这样呢就完成了一个连接,对吧?这个时候呢,我们开开,打开我们的 转接板电源,然后呢我们再打开我们的 电机驱动版的开关啊,所以大家看啊,我们现在的速度呢是占空比吧,也就是说我们总的速度是九十九,对吧?我们设置的占空比是三十,对吧?这是三十的速度,那当然呢,你接两个电机,那就另一个电机就接在这一块啊,我们同侧电机用一路信号去控制就可以了, 嗯,接法呢,就是啊,不复杂,当然呢,我们还有一,还有还有一路信号,对吧?可以控制另一侧的啊?两个电机轮子啊?