大佬教程收集整理的这篇文章主要介绍了STM32F3发现 – 实现GPIO中断,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经知道如何写Pins,但不多,请考虑我真的没有任何关于c或编程微控制器的知识.
一个简单的例子或解释将帮助我很多.以下代码是我已经拥有的,但我不确定这是否正确.
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.Pin = GPIO_PIN_2; GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING; GPIO_InitStructure.Pull = GPIO_PULLUP; GPIO_InitStructure.Speed = GPIO_SPEED_HIGH; HAL_GPIO_Init(GPIOA,&GPIO_InitStructurE); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
因此,简单下载它,为STM32F3 Discovery板创建一个新项目.
>在Pinout选项卡上,MCU将显示其所有引脚.只需单击一个引脚并选择所需的功能即可.在您的情况下,PA2引脚上的GPIO_EXTI2:
gpio.c中的GPIO配置:
GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ __GPIOA_CLK_ENABLE(); GPIO_InitStruct.Speed = GPIO_SPEED_LOW; /*Configure GPIO pin : PA2 */ GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI2_TSC_IRQn,0); // <--- This and HAL_NVIC_EnableIRQ(EXTI2_TSC_IRQn); // <--- this are what were missing for you.
stm32f3xx_it.c中的中断服务ruTine:
/** * @brief This function handles EXTI line2 and Touch Sense controller. */ void EXTI2_TSC_IRQHandler(void) { /* USER CODE BEGIN EXTI2_TSC_IRQn 0 */ /* USER CODE END EXTI2_TSC_IRQn 0 */ HAL_GPIO_EXTi_iRQHandler(GPIO_PIN_2); /* USER CODE BEGIN EXTI2_TSC_IRQn 1 */ /* USER CODE END EXTI2_TSC_IRQn 1 */ }
这是在触发中断时将调用的内容,它将调用GPIO2的IRQ处理程序,如果一切正常,将调用以下回调.你必须在这里编写处理程序代码.
/** * @brief Interrupt callBACk for GPIOs */ void HAL_GPIO_EXTI_CallBACk(uint16_t GPIO_Pin) { if ( GPIO_Pin == GPIO_PIN_2) { // Write your code here } }
您必须手动添加上一部分(回调),它只有一个弱声明但不会生成.您可以将它放在stm32f3xx_it.c中.
如果您想了解有关MCU的更多信息,请打开reference manual并阅读GPIO和NVIC部分,了解它是如何在寄存器级别完成的.
以上是大佬教程为你收集整理的STM32F3发现 – 实现GPIO中断全部内容,希望文章能够帮你解决STM32F3发现 – 实现GPIO中断所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。