机械臂本科生毕业设计(论文)范文 下载本文

东北大学秦皇岛分校毕业设计(论文) 第 21 页

都会通过锁相环配置出最大的72MHz频率,供给Cortex-M3内核使用。

在复位操作之后,首先开启 HSE 并等待其稳定,从而作为 PLL 的输入。其次,确定锁相环倍频数,使内核工作在最大频率下。该设计以8MHz的 HSE 作为时钟源, PLL 倍频数需要设置为6才能使 PLL 恰好输出48MHz的频率。

在 PLL 设置好后,Cortex-M3内核就以72MHz的频率运行了,此时,还需要通过改变总线控制寄存器设置 AHB 和 APB 总线频率。 AHB 和APB2的最高频率是72MHZ。APB1的最高允许频率是36MHZ。

图4.1 STM32时钟树

本部分的程序流程图如下:

东北大学秦皇岛分校毕业设计(论文) 第 22 页

图4.2 系统时钟初始化流程图

开始 复位系统时钟设置 开启外部振荡器HSE 是否成功起振并稳定? YN 选择AHB,APB1,APB2频率 使能锁相环PLL 等待PLL输出稳定,成为时钟源 结束 与该流程图相对应的程序设计见附录C。 4.1.2 SysTick定时器

SysTick ,即系统节拍时钟,它作为ARM Cortex-M3内核的一个内设,和STM32微控制器之间并没有必然的联系。SysTick的存在既能够提供必要的系统节拍,为实时操作系统的任务调度提供一个有节奏的―心跳‖,进而提高可靠性,又方便了程序在不同器件间的移植。

系统初始化时,RCC通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)

东北大学秦皇岛分校毕业设计(论文) 第 23 页

的外部时钟。通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex(HCLK)时钟作为SysTick时钟。系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的最大值),产生1ms时间基准。

本部分的程序流程图如下:

图4.3 SysTick定时器初始化流程图

开始 设置Systick重装载时间 失能Systick定时器 设定中断函数,获取节拍 使能Systick定时器 结束 与该流程图相对应的的程序设计见附录C。 4.1.3 TIM定时器

STM32微控制器具备高级定时器TIM1和TIM8 2个,通用定时器TIM2、TIM3、TIM4和TIM5 4个以及基本定时器TIM6和TIM7 2个,再加上 RTC 和 Systick 定时器,总数量达到了10个。

基本定时器可以为用户提供准确的时间参考;通用定时器不仅具备时间参考功能,还具有输入捕捉、输出比较、单脉冲输出、 PWM 输出功能和正交编码器的特点;高级定时器更是加入了可以产生带死区控制的互补 PWM 信号、紧急制动、定时器同步等高级特征,并最多可以输出6路 PWM 信号,可谓是意法半导体赋予STM32的王牌。

本设计采用TIM2、TIM3的 PWM 输出功能和TIM4的计数功能。

东北大学秦皇岛分校毕业设计(论文) 第 24 页

本部分的程序流程图如下:

结束 图4.4 TIM定时器初始化流程图

开始 配置PWM输出引脚 设置定时器TIM2各输出通道占空比 设置定时器TIM3输出通道1占空比 延时1000ms,等待手臂初始化完成 设置定时器TIM4计数模式 与该流程图相对应的的程序设计见附录C。 4.1.4通用输入输出接口GPIO

GPIO 可以说是STM32最常用的外设。STM32F103ZET6提供多达112个双向 GPIO ,分别分布在 A~G 这7个端口中。每个端口又包括16个 GPIO ,都可承受5V的压降。GPIO 可通过配置寄存器工作在如下8种模式:浮空输入、带上拉电阻的输入、带下拉电阻的输入、模拟输入;开漏输出、推挽输出、复用推挽输出、复用开漏输出。

该设计中将PA0、PA1、PA2、PA3、PA6作为 PWM 波的输出口;PA4、PA5作为 LED 显示接口;PA7、PA8作为超声波传感器信号的接收发送接口;PB6、PB7分别作为串口的发送接收接口。 4.1.5超声波传感器模块

首先,STM32的PA7端口接超声波传感器的 TRIG 口,触发测距信号,发出10us