通过之前Simulink的仿真后,大体知道了SVPWM的工作过程,为了实际验证控制PMSM,需要在mcu上实操。硬件电路不投入过多精力,以软件调试为主。
Mcu型号:stm32f405RGT6
使用的工程是自带的,这块不是重点,目前大多使用Hal库进行开发。最终是调制出PWM,先点亮一个led灯,然后使用PWM点一个呼吸灯,之后控制PMSM。
先找到板子上可用的led灯,还好有一个,绿色标出。看右上的图,给LED一个高电平,它会亮。
通过《STM32F4xx中文参考手册》找到PC在挂在哪个总线上。
最原始的程序:
GPIO_InitTypeDef GPIO_InitStructure;
//使能 AHB1 - PC 端口时钟,时钟树的细节后面可以再去了解
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);
//被控制的引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
//设置引脚模式,推挽输出模式(Push-Pull Output Mode),
//使得该引脚可以作为数字输出端口使用;
//高电平输出:当输出设置为高电平时,GPIO 引脚会直接连接到 VCC(电源电压),
//提供足够的电流以驱动外部电路。稳定的电平输出:
//在推挽模式下,GPIO 引脚的高电平和低电平输出都很稳定,
//因此适合用于控制外部设备,例如 LED、继电器、外部逻辑电路等。[chatGPT]
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
//表示在引脚上不启用内部上拉或下拉电阻。这样,引脚既不会被拉高(上拉到高电平),
//也不会被拉低(下拉到低电平),而是处于浮动状态。
//这种模式通常在以下情况下使用:
//外部电路驱动:引脚由外部电路驱动,并且不需要内部上拉或下拉电阻。
//模拟输入:引脚用作模拟输入,这样内部上拉或下拉电阻不会干扰模拟信号的读取。
//专用外部上拉/下拉电阻:引脚连接到一个具有特定上拉或下拉电阻的外部电路。[gpt]
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
//设置速度
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
//将引脚置为高电平
GPIO_SetBits(GPIOC, GPIO_Pin_9);
编译下载程序,它亮了。
欢迎关注: