外部中断
时间:10-02
整理:3721RD
点击:
今天学习中断输入,按下按键显示Pressed,松开显示Realease
实验原理图:

Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F412ZGTx。

Step2.在 Pinout 界面下配置 PC13 按键输入引脚为 EXTI 功能。

Step3.配置 USART,用于按键信息输出。


时钟树的配置丌作任何修改,使用内部 16M 时钟源,内核时钟 16M。
Step4.配置串口参数和 GPIO 的参数。
在 configuration 界面中点击 USART3 按钮,可以进入参数配置界面,使用默认参数即可。

在 configuration 界面中点击 GPIO 按钮,配置 GPIO 的无上下拉电阻和中断触发沿。

在 configuration 界面中点击 NVIC 按钮,使能 GPIO 外部中断,并配置中断优先级。

Step5.生成源代码。
点击生成源代码按钮。


Step6.添加功能代码。
在/* USER CODE BEGIN 4 */和/* USER CODE END 4 */注释之间加入下述代码。实现的功能
是,按键触发中断后,通过串口发送相应信息。要注意的是,按一次按键,可能会发送多条信
息,原因是按键存在的抖动,这和事实相符。
源,就判断其输入参数 GPIO_Pin。
实验结果:

按下会显示Pressed,松开显示Realease.
实验原理图:

Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F412ZGTx。

Step2.在 Pinout 界面下配置 PC13 按键输入引脚为 EXTI 功能。

Step3.配置 USART,用于按键信息输出。


时钟树的配置丌作任何修改,使用内部 16M 时钟源,内核时钟 16M。
Step4.配置串口参数和 GPIO 的参数。
在 configuration 界面中点击 USART3 按钮,可以进入参数配置界面,使用默认参数即可。

在 configuration 界面中点击 GPIO 按钮,配置 GPIO 的无上下拉电阻和中断触发沿。

在 configuration 界面中点击 NVIC 按钮,使能 GPIO 外部中断,并配置中断优先级。

Step5.生成源代码。
点击生成源代码按钮。


Step6.添加功能代码。
在/* USER CODE BEGIN 4 */和/* USER CODE END 4 */注释之间加入下述代码。实现的功能
是,按键触发中断后,通过串口发送相应信息。要注意的是,按一次按键,可能会发送多条信
息,原因是按键存在的抖动,这和事实相符。
- /* USER CODE BEGIN 4 */
- void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
- {
- if(GPIO_Pin & GPIO_PIN_13)
- {
- if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == GPIO_PIN_SET)
- {
- const char* pBuf = "Pressed\r\n";
- HAL_UART_Transmit(&huart3,(uint8_t*)pBuf,strlen(pBuf),100);
- }
- else
- {
- const char* pBuf = "Release\r\n";
- HAL_UART_Transmit(&huart3,(uint8_t*)pBuf,strlen(pBuf),100);
- }
- }
- }
- /* USER CODE END 4 */
源,就判断其输入参数 GPIO_Pin。
实验结果:

按下会显示Pressed,松开显示Realease.
顶一下,0回复啊
小编的进度好快啊
