上传者: 26643379
|
上传时间: 2022-04-28 13:35:33
|
文件大小: 3.56MB
|
文件类型: PDF
第4章 系统软件设计
本章在系统硬件设计的基础上介绍系统软件的设计。 和硬件设计一样, 灵活
高质量的软件设计是系统能够正常高效运行的前提。 本系统的软件设计主要包括
主程序、中断服务程序和各个子程序模块设计。 主程序主要进行硬件和各变量各
模块的初始化,和控制任务的循环。中断服务程序主要执行矢量控制算法的实现、
输出 SVPWM 的调制以及故障信号的中断处理。各子程序模块则主要实现电压
电流采样、转速检测、按键控制、 LCD 显示以及串口通讯任务等。整个软件设
计是在 Keil uVision4 开发环境下编写完成的。
4.1 主程序设计
主程序是整个系统软件的主体,主要对 STM32 及其外围器件进行初始化工
作,设置相应中断后,便进入一个主循环状态机,随时相应各中断与控制输入信
息,完成系统的电机控制任务及故障信息的检测。
系统的初始化代码主要如下:
RCC_Configuration();
GPIO_Configuration();
SVPWM_IcsInit() ;
ENC_Init();
KEYS_Init() ;
LCD_Init() ;
TB_Init();
PID_Init();
NVIC_Configuration() ;
RCC_Configuration()进行系统系统时钟的初始化。 设置各个外设的时钟频率,
包括系统主时钟、 GPIO、ADC、定时器、FSMC 等,并对它们的时钟进行使能。
GPIO_Configuration()进行系统各 I/O 口的初始化。设置使用到的 GPIO口的
复用引脚功能、输入输出模式、速率大小等。
SVPWM_IcsInit() 进行 SVPWM 调制模块与 ADC 电流采样的初始化。使用
高级定时器 TIMER1 产生 6路互补输出的 PWM 波,设置其计数模式、 各寄存器
初始值及死区时间等。设置 ADC 的工作模式、采样通道、采样频率等。
ENC_Init()进行光电编码器的初始化。采用普通定时器 TIMER2 对编码器输
入脉冲进行计数,设置其相关参数。
KEYS_Init() 进行按键的初始化。设置使用到的 GPIO 口相关寄存器的初始值。