你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-L496ZG评测】+ 外部中断实验

[复制链接]
请叫我小张张 提问时间:2017-5-14 11:51 /
    前面我们点了个灯 现在我们来做个外部中断测试实验。长话短说。    我们用CUBE配置好引脚,这次我们选用USER按键按钮引脚配置为外部中断触发。
    配置好LD2,LD3引脚,通过外部中断事件触发,从而控制这两个灯的变化。
    配置好时钟,使能外部中断,生成工程。
  
   这里同样使用的是MDK keil集成开发环境。


  首先使能时钟
  
  1. __HAL_RCC_GPIOC_CLK_ENABLE();
  2.   __HAL_RCC_GPIOB_CLK_ENABLE();
复制代码
   配置GPIO
  1. //按键
复制代码
中断分组配置以及使能中断
  1. HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 0);
  2.   HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
复制代码
中断处理函数
  1. void EXTI15_10_IRQHandler(void)
  2. {
  3.   /* USER CODE BEGIN EXTI15_10_IRQn 0 */

  4.   /* USER CODE END EXTI15_10_IRQn 0 */
  5.   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
  6.   /* USER CODE BEGIN EXTI15_10_IRQn 1 */

  7.   /* USER CODE END EXTI15_10_IRQn 1 */
  8. }
复制代码
当按键按下,就会触发中断,从而进入下面的外部中断回调函数

  1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
  2. {
  3.         delay_ms(10)//延时10毫秒,消抖
  4.         switch(GPIO_Pin)
  5.         {
  6.                 case GPIO_PIN_13:
  7.                         if(USER==1)        //控制LD3,LD2电平翻转
  8.                         {
  9.                                 HAL_GPIO_TogglePin(GPIOB, LD3_Pin | LD2_Pin);
  10.                         }
  11.                         break;
  12.         }
  13. }
复制代码
在main函数如下写就好:
  1. int main(void)
  2. {

  3.   /* USER CODE BEGIN 1 */

  4.   /* USER CODE END 1 */

  5.   /* MCU Configuration----------------------------------------------------------*/

  6.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  7.   HAL_Init();

  8.   /* Configure the system clock */
  9.   SystemClock_Config();

  10.   /* Initialize all configured peripherals */
  11.   MX_GPIO_Init();

  12.   /* USER CODE BEGIN 2 */

  13.   /* USER CODE END 2 */

  14.   /* Infinite loop */
  15.   /* USER CODE BEGIN WHILE */
  16.   while (1)
  17.   {
  18.   /* USER CODE END WHILE */

  19.   /* USER CODE BEGIN 3 */

  20.   }
  21.   /* USER CODE END 3 */

  22. }
复制代码
编译下载验证,结果如下图,当上电第一次按下按键的时候LD3,LD2亮,再按就正常熄灭,多测试几次,没有出错的话,就成功了。
IMG_20170514_090236.jpg

IMG_20170514_092313.jpg
IMG_20170514_092326.jpg
收藏 1 评论1 发布时间:2017-5-14 11:51

举报

1个回答
feixiang20 回答时间:2017-5-20 22:54:58

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版