分享

Robomaster C板初体验

 云深无际 2023-07-12 发布于内蒙古

何工搓机器,两个打印件搓,4个螺丝拧拧,不过硬件倒是尖货,DJI的RM C板,啥啥电机,我一臭搞数学的(假的,你猜我为什么快混到改行),还没有摸过!摸它!

样子大概就是这样

看看者379的F4板子,只有DJI敢卖,也能卖出去,板子的布局是漂亮的呀

看一看内部是什么样的,资料给的很全,电路设计也可以学到很多

先装软件~

官方给的

直接冲吴总的博客!!!

记得关

重点是这个

MX全系安排

最全的文档就是这个了

https://www.st.com/en/development-tools/stm32cubemx.html?dl=vgbS4Ap3wwRcAAk%2FgvgH8w%3D%3D%2CdaRrCsauK51VnWJRayNHB2Ov5j01u7mKO9pyBOTFToa2xz%2BB%2F9GE3g3t%2F1LN5AMbVJLaXo4s9s%2BJ8qbZcbYe0Avjao4UEq%2FwnRp5WHw6ui0I0foT%2BJyHcQQstLwor8tpATbB5lrlhQcSAqgvcCoeOdBfW9H0AUPKL4sBK4v8OTLQKoB0NvQXWf7HnA0t6TWWBYGV%2BRRWwcTkl0GxB%2FVZbiMaG90S6AanR2GKQxwdQrtLza9nx%2BaUcTioZPl5e4rmS4MUNJro1AVlwPu1yfDgHHOpHQvjLwr3hBQHAtZu5bHyoq6FxJiSNg7Nta213SnP%2FlTIflZD7moWJP7UNju1pGfIjmUWKfpWCT%2B4FHV6mSpkM%2BIVZ2u5WPdwvHpVCzDc

这个就是固件包和RTOS的支持包

ST-Link V2的驱动

下面这个CMSIS我没安装好

http://www.openedv.com/docs/tool/dap/ST-LINKV2.html

点击这里是F4的所有固件包

没啥,就是图好看

选F4

这个不需要邮箱就可以

全在GT上面

包含完整的example

STM32F407IGH6

这个东西只能上热床了

好多啊,串口都这么多

激活一个CAN看看

从103过来的,就感觉,WOW,这么多

在这个APB上面挂着这个CAN

看看CAN的引脚,好多的功能都映射上去了

这里U·ェ·*U的一点是,你可能无法直接就下载安装正确的fw包,但是你可以随便下载个4的包,然后再打开zero的工程,接着去在生成的时候重新去下载一次。

生成的代码有点问题

是我的版本有点高,这里我用6去生成

气死了,什么jb口

直接买4个,便宜的很,

插上去了以后提示要更新

居然还连上了,我咸鱼27买的好东西

OKOKOKOK

拿出一个F4的板子怼上去,主打一个arm的通用

这不就安排上了

加小小的断点,后句不会了

随便runrun,环境就算搭建完成了

这个因为没有什么设置功能。

我们来看下第二个包的

突然发现有道这么厉害了,安利

RGB的定义

晶振

中断的开关页面

同样是设置

算了,第二次的工程就报错了,说是table不一样

继续让我们看这个文档,看看有啥

讲到这个LED了,这个板子一看就是AD画的

这个MOS管不要钱似的

马总是为了保护电脑,可能这个就是贵的原因吧?明天写硬件

板子给了原理图,可以当普通的开发板使用

HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。库如其名,很抽象,一眼看上去不太容易知道他的作用是什么。
它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。
并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。是而且使用ST公司研发的STMcube软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,可以说是方便至极,但是方便的同时也造成了它执行效率的低下,在各种论坛帖子真的是被吐槽的数不胜数。

VSCode的使用打开这个

这个是demo里面的定义

VSCode可以实时的给注释

这个只是演示HAL库而已

TIM1的设置,打开内源的时钟

在后面就是最终的分频数

看看在哪里挂着

代码里面也可以看到是哪里

这个最大的预分频频率就是32MHz

通过设置分频比和重载值来控制定时器的周期,如果想要得到周期为 500 毫秒的定时器,公式来对分频值和重载值进行设定。

回到 Pinout&Configuration 标签页下,对应 TIMx_PSC 寄存器的 Prescaler项和对应 TIMx_ARR 寄存器的 Counter Period 项。

500ms 对应的频率为 2Hz,为了得到2Hz 的频率,可以将分频值设为 16799,重载值设为 4999,则可以计算出定时器触发频率为:

公式

这个就是定时器要是设置的值

我这里翻译了

这里也可以打开一些中断的事情

这个是优先级

安装4位设置

在这里是可以设置优先级

占优先级和响应优先级的分配和中断的两种优先级的配置,我们开一个

这个就是我们要处理的中断函数

里面就是会看看到底是哪个中断响应了

里面调用的函数

里面是按照TIM的响应去回调

weak是弱定义,指望自己的函数

这个是怕函数报错

非阻塞模式下的回调

在main中重写这个回调函数

如果不开启中断,需要是打开这个函数

嗯,记得打开

返回值

定时中断还是要开启的这个的,在while之前写入

在Keli里面可以找到数据手册,F4应该没有中文的

APB1 和 APB2 两个总线的时钟频率设置,其中 APBx peripheral clocks 为挂载在总线上的定时器以外的外设提供时钟源,APBx timer clocks 为挂载在总线上的定时器提供时钟源。

分频值为 TIMx_PSC 中的分频值+1。即 TIMx_SPC 为 0 时,分频比刚好为 1:1,如果 TIMx_SPC 为 15,则分频比为16:1,进入的 16MHz 的频率信号会被分频为 1MHz。

分频后的频率就是 TIMx_CNT 自增的频率,当 TIMx_CNT 的值增长到 TIMx_ARR 中的值后,就会发生重载,并触发中断信号,相当于使用 TIMx_ARR 中的值又进行了一次分频。因此产生这个中断信号的频率应该为(需要加 1 是因为 CNT 是从 0 开始计数的)。 

频率

定时器触发频率的公式

本来是想写PWM的,但是下班了

记得设置一下这里

猜猜是什么?

下篇继续
https://www.st.com/zh/microcontrollers-microprocessors/stm32f407ig.html#documentation

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多