历史上的今天
返回首页

历史上的今天

今天是:2025年03月24日(星期一)

正在发生

2019年03月24日 | STM32CUBEMX 中断管理

2019-03-24 来源:eefocus

使用cube开发工具进行开发,使用HAL库,有一个问题就是当我们在cube界面配置完成后“以为完全配置好了”,结果在实际代码编写的时候回发现常见以下问题:


1:中断没配置


2:优先级没配置


这里简单分析以下手动开启中断的配置 取两个例子


example1:如何在无法改动cube工程的情况下 使能外部中断


step1


gpio.c 中


  GPIO_InitStruct.Pin = MotoFG_Pin;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;

  GPIO_InitStruct.Pull = GPIO_PULLUP;

  HAL_GPIO_Init(MotoFG_GPIO_Port, &GPIO_InitStruct);

 

  HAL_NVIC_SetPriority(EXTI3_IRQn, 5, 0); //改为外部中断9

  HAL_NVIC_EnableIRQ(EXTI3_IRQn); //手动修改外部中断设置


step2


it.c中


void EXTI3_IRQHandler(void)

{

  

  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3); //增加中断句柄

}

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) //添加中断相应函数处理

{

 switch(GPIO_Pin)

 {

   case GPIO_PIN_3:

     {

      PulseCome++;

     }

   break;

  default:

   break;

 }

}


example2:如何在无法改动cube工程的情况下 利用timer2 ch4 开启PWM输出

这里有个坑,在103c8中timer2 ch4恰好是SWD口,PB3所以开启时需要开启复用时钟

/* TIM2 init function */

void MX_TIM2_Init(void)//117

{  

 TIM_ClockConfigTypeDef sClockSourceConfig;

  TIM_MasterConfigTypeDef sMasterConfig;

  TIM_OC_InitTypeDef sConfigOC;

  htim2.Instance = TIM2;

  htim2.Init.Prescaler = 71;

  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;

  htim2.Init.Period = 3600;

  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;

  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;

  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;

  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

  sConfigOC.OCMode = TIM_OCMODE_PWM1;

  sConfigOC.Pulse = 1234;

  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

  sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;

  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

  HAL_TIM_MspPostInit(&htim2);

}

继续追进去  

void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)

{

  GPIO_InitTypeDef GPIO_InitStruct;

  if(timHandle->Instance==TIM2) //117

  {

  

    GPIO_InitStruct.Pin = timer2Pwm;

    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;

    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

    HAL_GPIO_Init(timerpwm_GPIO_Port, &GPIO_InitStruct);

    __HAL_AFIO_REMAP_TIM2_PARTIAL_2(); // 开AFIO时钟

  

  }

}

最后,别忘了在it.c中加入句柄

void TIM2_IRQHandler(void) //117

{

  /* USER CODE BEGIN TIM4_IRQn 0 */

  /* USER CODE END TIM4_IRQn 0 */

  HAL_TIM_IRQHandler(&htim2);

  /* USER CODE BEGIN TIM4_IRQn 1 */

  /* USER CODE END TIM4_IRQn 1 */

}


推荐阅读

史海拾趣

登丰微(GSTEK)公司的发展小趣事

随着电子行业的快速发展和市场需求的不断变化,歌普电子也在积极调整战略布局,以应对未来的挑战和机遇。公司不仅在现有产品领域持续深耕细作,还积极探索新的业务领域和增长点。通过多元化布局和不断创新,歌普电子致力于成为电子行业的领军企业之一。未来,歌普将继续秉承“创新、高效、尊重、负责”的文化理念,为客户提供更加优质的产品和服务,共同推动电子行业的繁荣发展。

DSP Group Inc公司的发展小趣事

随着技术的不断进步和市场需求的增长,DSP Group开始将业务扩展到半导体领域。公司推出了一系列高性能、低功耗的DSP芯片,广泛应用于移动通信、智能家居、汽车电子等领域。这一举措不仅进一步巩固了DSP Group在DSP领域的领先地位,还为公司带来了可观的收益和市场份额。

AMSCO [Austria micro systems AG]公司的发展小趣事

随着全球市场的不断变化和竞争的加剧,DSP Group不断调整其全球化布局和战略转型。公司先后在德国、英国等地设立了研发中心和办事处,加强了与国际市场的联系和合作。同时,DSP Group还积极寻求与其他公司的合作和并购机会,以进一步拓展其业务领域和市场份额。通过这些举措,DSP Group在全球范围内建立了广泛的销售网络和合作伙伴关系,为其未来的发展奠定了坚实的基础。

以上五个故事概述了DSP Group Inc公司在电子行业中发展起来的关键阶段和重要事件。这些故事不仅展示了DSP Group在技术创新、市场拓展和全球化布局方面的努力和成果,也反映了电子行业发展的趋势和变化。

百蓉(ECE)公司的发展小趣事

随着全球对可持续发展的日益重视,百蓉公司也开始在这一领域进行探索。他们研发出了一系列节能环保的电子产品,如低功耗显示器、高效能电源管理器等。同时,公司还积极参与废旧电子产品的回收和再利用工作,致力于减少电子废物对环境的污染。这些举措不仅提升了百蓉公司的品牌形象,也为其赢得了更多的市场份额。

上述五个故事,客观描述了百蓉公司在电子行业的发展历程,展现了其在技术创新、市场拓展、智能制造和可持续发展等方面的努力和成果。

ASPEED Technology公司的发展小趣事

自成立以来,ASPEED Technology一直致力于自主创新技术的研发与客户需求的快速响应。公司拥有一支专业的研发团队,不断推出具有竞争力的新产品和解决方案。同时,ASPEED还积极拓展全球市场,与众多知名企业和机构建立了合作关系,为公司的发展奠定了坚实的基础。正是这种持续的创新与研发精神,使得ASPEED在电子行业中不断发展壮大,成为了一家备受瞩目的企业。

以上五个故事均基于ASPEED Technology公司发展起来的相关事实,展现了公司在并购、产品创新、合作研发等方面的努力和成果。这些故事不仅反映了ASPEED在电子行业中的成长轨迹,也展示了其不断追求卓越、推动行业发展的决心和实力。

Boundary Devices公司的发展小趣事

作为一家有社会责任感的企业,Boundary Devices始终关注环境保护和可持续发展。公司在生产过程中积极采用环保材料和技术,减少对环境的影响。同时,公司还积极参与社会公益活动,为社会的发展贡献自己的力量。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

以上五个故事基于Boundary Devices公司的发展背景和电子行业的一般趋势进行创作,旨在展示该公司在不同阶段的成长与发展。然而,实际的公司发展历程可能更加复杂和丰富,需要更多的资料和信息来深入了解。

问答坊 | AI 解惑

高性价比兼容三菱FX1N国产系列PLC

功能介绍:   ○ 编程软件兼容日本三菱FXGP_WIN-C梯形图软件,在应用中相当于三菱的FX1N;   ○ 工作电源AC18V或DC24V,带有防雷击保护电路; ○ 主板有20路I/0输入输出,其中输入12路,输出8路(有继电器输出和晶体管输出两种型号); ○ 本 ...…

查看全部问答>

【藏书阁】图表细说元器件及实用电路

目录: 第1章 新概念电子电路入门基础 1.1 熟悉最基本的日常电路 1.1.1 电工电路与电子电路的区别 1.1.2 电子电路图和电路图识图信息解析 1.1.3 常见电子电路种类解说 1.2 掌握基本的技术名词和概念 1.2.1 电流概念解说 1.2.2 电位、电压 ...…

查看全部问答>

7*1W LED驱动 方案 FAN103 做出来的成本是否有竞争性

7*1W LED驱动 85-265输入 变压器隔离 恒流输出 成本上考虑是否适用; 有比这方案更好的吗? …

查看全部问答>

串口传送数据传了3个字节,只显示一个字节

uchar buffer[]={0xaa,0xbb,0x64}; void init_serial();  //串品初始化 void senddata(uchar *buffer,uchar length);//发送数据 void senddata(uchar *buffer,uchar length) {   uchar i;   for(i=0;i…

查看全部问答>

有关遨游设置问题

遨游右上角有我的电脑、注册表编辑器 什么的 想把其中一个改为WORD  编辑的命令是什么? …

查看全部问答>

在XP中无法正常使用数码相机的问题!

在下有一套 SIPIX矽峰SC-1300/SC-2100的数码相机,驱动程序只支持到WindowsXP SP1,在SP2的系统上就不行了(驱动能装上,但是使用Photoshop等软件都无法引入图象,但windows2003/windows2000/windowsXP SP1下就可以正常使用),去下载驱动,发现我这个驱动 ...…

查看全部问答>

LPC1114中的CT32B0_MAT2与CT16B1_CAP0都是具体怎么解释啊

请问LPC1114中的CT32B0_MAT2与CT16B1_CAP0都是具体怎么解释啊…

查看全部问答>

无叶风扇原理图

最近想搞个无叶风扇,不知道大家谁有它的图纸参考下。还有,它的电机是不是步进电机?电机上也没有型号文字。在此先谢了。…

查看全部问答>

草根创业回忆录一: 踏出了第一步的时候...

草根创业回忆录一: 踏出了第一步的时候... 前言:当现状已经变得不如意的时候,不同的人便有了不同的反映:有的人整天的在唉声叹气,有人在咬牙的骂爹咒娘,有的在另谋高就,更有些人在蠢蠢欲动…          ...…

查看全部问答>

激光信号转换为电信号问题

请教大家一问题,用什么器件,可以将激光信号转换为电信号呢?…

查看全部问答>