拿到开发板有一阵子了,平时比较忙没时间来试试新的开发板。这次没有尝试开发板的新功能,只是做了一下和我最近比赛有关的一个小程序。这一段我是想放一个视频的,但是时间仓促没剪辑好,下次做好了再更新这个帖子。
1、在STM32CubeMX里面配置好程序
把要用的引脚都配置出来,时钟我们都是用默认的配置不用去管。
在配置界面我们做一些调整
GPIO的配置,我设置了几个引脚来控制电路板。还有一个是按键的端口,用来检测并触发中断。
我参考了很多资料才知道这个按键改检测上升沿还是下降沿。((⊙﹏⊙)b)
NVIC的配置,这里主要是设置上面提到的按键,产生中断来变换控制端口的电平。
我们设置那个EXTI的中断就可以了。
好的,这里我们的工程就配置好了,只要点击生成代码就可以开始编写程序了。我使用的开发环境是Keil,其他的都可以参考一下。
2、简单的一段程序编写
下面的代码程序在文件stm32f4xx_it.c里面,我们找到了中断处理函数 EXTI15_10_IRQHandler(void)。当按键按下触发这个中断的时候,自动调用这个中断处理函数。我在这个函数里面添加了一段用户代码来改变输出口的状态。
void EXTI15_10_IRQHandler(void)
{
/* USER CODE BEGIN EXTI15_10_IRQn 0 */
/* USER CODE END EXTI15_10_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
/* USER CODE BEGIN EXTI15_10_IRQn 1 */
if(Circle == 0)Circle = 8;
switch (Circle) {
case 1:
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);
break;
}
case 2:
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);
break;
}
case 3:
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
break;
}
case 4:
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
break;
}
case 5:
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
break;
}
case 6:
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
break;
}
case 7:
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);
break;
}
case 8:
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);
break;
}
}
Circle--;
/* USER CODE END EXTI15_10_IRQn 1 */
}
大致的内容就是这样,下载程序到开发板上就可以正常工作了。
有什么问题可以回复,我一定不会解答……
|