本帖最后由 zyz0926 于 2024-12-26 17:12 编辑
#申请原创# 使用APM32F407开发伺服或其他电机控制代码中,一般会用到CubeMX来进行初始工程的代码生成。主要目的就是生成各个外设,时钟的基础底层配置。它相较于手动生成工程,具有开发效率高,程序直观化,避免部分BUG等优势。
下面我们来介绍用CubeMX来进行低压伺服代码开发的具体步骤和方法。
1.根据低压伺服的功能需求以及管脚配置EXCEL文件来为芯片配置功能引脚。
该步骤主要是配置各个管脚的功能使用,以及对应的外设配置等。该步骤是自动代码生成的主要工作量。
用户可以先行规划好待开发的主芯片需要使用的各类资源,制定好一套管脚资源使用表。然后对着管脚资源使用表在Pinout_view界面直接配置进行填写配置。管脚颜色为灰色表示该管脚尚未使用;管脚颜色为绿色表示该管脚配置正确。
具体的细节步骤为:
① 左键点击每个管脚,在弹出的界面下,选择每个管脚需要设置的复用形式或GPIO状态。直到所有管脚配置完毕。这种配置方式直观度高,可以避免管脚分配错误或复用错误的情况。
② 再点开外设分类的列表里面,可以看到涉及到的外设基本变为绿色,此时各个外设或GPIO需要进行2模式确认,3各类寄存器设置等详细配置,各个外设配置完毕且正确,才会出现绿色勾选的状态,否则会出现红色错误或黄色警告标志。
以TIM1高级定时器配置为例来进行说明,需要配置的部分包括模式确认,中断设置,管脚设置,参数设置等,根据需求来进行具体配置。
2.时钟树配置
本低压伺服采用160M主频,时钟来源为8M的外部晶振,AHB总线时钟为160M,APB1,APB2外设时钟为10M,80M
该界面左半部分主要是分配时钟源,LSE, LSI , HSI,HSE,分别代表低速外部时钟源,低速内部时钟源,高速内部时钟源,高速外部时钟源。H代表High,L代表Low,E代表external,Id代表Internal,S代表Source。一般有条件的均会选择高速外部时钟源,提供的时钟稳定性更好。
中间部分主要是锁相环PLL的配置,提供系统时钟SYSCLK,锁相环配置注意符合规范,否则会标红报错。
右边部分主要是配置AHB,APB1,APB2等系统外设时钟。用户需要查找手册,来确认各个外设是挂在哪个外设时钟下面的,来进行相应的配置。比如用户需要配置的通信外设时钟为30M,就需要确认该外设到底是挂在,APB1还是APB2,不可混淆。
3.工程配置
这部分较为简单,主要是配置工程目录,编译器,堆栈,pack版本以及使用的库函数,包括LL库以及HAL库。两个库各有优缺点,HAL库完整度更好,但是代码量多,程序执行较慢。LL库则完整度相对较差。本人选择为采用LL库来编译完成整个初始工程,缺失的函数部分,按照其各自的实际需求,可以采用直接操作寄存器的方式来实现。这种方式的优点是简单直接,代码较短,程序执行较快。缺点就是可读性不强。
4.代码生成
|