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

查看: 967|回复: 1

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

[复制链接]

14

主题

191

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-12-5
发表于 2017-5-14 11:51:21 | 显示全部楼层 |阅读模式
    前面我们点了个灯 现在我们来做个外部中断测试实验。长话短说。    我们用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
<
回复

使用道具 举报

91

主题

4603

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2017-5-20 22:54:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版