开发板上使用的普通GPIO端口分别是4个LED,1个按键,3个U,V,W使能引脚。暂时没有使用霍尔传感器,所以省略。
1.硬件电路设计
(1)3个U,V,W使能引脚,控制L6230PD的使能脚。其中PC10控制U相,PC11控制V相,PC12控制W相。
(2)IHM07M1开发板的运行指示灯,使用的是PB2进行控制。定义为LED4。
(3)NUCLEO-F746开发板的指示灯LED2和LED3,分别使用的是PB7和PB14进行控制。按键是高电平输入有效,使用的是PC13进行采集输入信号。
(4)NUCLEO-F746开发板的指示灯LED1,分别使用的是PB0进行控制。
2.软件设计
普通GPIO的软件初始化配置非常简单。这一部分可以参照其他厂家,比如正点原子、野火,进行了解,不做详细赘述。
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();//使能GPIOC时钟,AHB1总线
__HAL_RCC_GPIOH_CLK_ENABLE();//使能GPIOH时钟,AHB1总线
__HAL_RCC_GPIOA_CLK_ENABLE();//使能GPIOA时钟,AHB1总线
__HAL_RCC_GPIOB_CLK_ENABLE();//使能GPIOB时钟,AHB1总线
__HAL_RCC_GPIOD_CLK_ENABLE();//使能GPIOD时钟,AHB1总线
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, LD1_Pin|LD4_Pin|LD3_Pin|LD2_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC, M1_PWM_EN_U_Pin|M1_PWM_EN_V_Pin|M1_PWM_EN_W_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin : Start_Stop_Pin */
GPIO_InitStruct.Pin = Start_Stop_Pin;//用户按键
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;//下降沿触发中断
GPIO_InitStruct.Pull = GPIO_PULLUP;//上拉模式
HAL_GPIO_Init(Start_Stop_GPIO_Port, &GPIO_InitStruct);//初始化
/*Configure GPIO pins : LD1_Pin LD4_Pin LD3_Pin LD2_Pin */
//LED1:绿色,PB0
//LED2:蓝色,PB7
//LED3:红色,PB14
//LED4:红色,PB2, IHM07M1开发板中
GPIO_InitStruct.Pin = LD1_Pin|LD4_Pin|LD3_Pin|LD2_Pin;//LED灯引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;//推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL;//无上拉和下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;//低速模式
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);//初始化
/*Configure GPIO pins : M1_PWM_EN_U_Pin M1_PWM_EN_V_Pin M1_PWM_EN_W_Pin */
GPIO_InitStruct.Pin = M1_PWM_EN_U_Pin|M1_PWM_EN_V_Pin|M1_PWM_EN_W_Pin;//U,V,W使能引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;//推完输出
GPIO_InitStruct.Pull = GPIO_PULLDOWN;//下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;//高速模式
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);//初始化
}
其中用户按键的作用是:按下电机运行,在按一下电机停机,采用输入中断方式采样信号。