215|7

108

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

STM32 BOOT跳转到APP后部分功能失效,1个外部中断口无法进入,另1个外部中断正常 [复制链接]

本帖最后由 liyancao001 于 2024-12-14 11:03 编辑

现象:

    芯片是STM32F767ZGT6,电路包含3路SPICAN功能,实际使用了CAN4和CAN5,  没有使用APP(即没有向量便宜和设置偏移)时功能正常,改为APP后CAN5收不到数据了。

    使用了STM32CUBE生成的FreeRTOS。

    //PD6是CAN4 INIT

    //PB8是CAN5 INIT
    //PC9是CAN6 INIT

大概原理:

    SPICAN芯片有INIT针脚,单片机用外部中断检测这个针脚如果出现下降沿则使用SPI读取芯片内的CAN数据。

主要代码:

初始化:
  /*Configure GPIO pin : PtPin */
  GPIO_InitStruct.Pin = SPI_INT_CAN4_Pin;
  //GPIO_InitStruct.Mode = GPIO_MODE_INPUT;//GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(SPI_INT_CAN4_GPIO_Port, &GPIO_InitStruct);

  /*Configure GPIO pin : PtPin */
  GPIO_InitStruct.Pin = SPI_INT_CAN5_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(SPI_INT_CAN5_GPIO_Port, &GPIO_InitStruct);

  /*Configure GPIO pin : PtPin */
  GPIO_InitStruct.Pin = SPI_NSS_CAN5_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  HAL_GPIO_Init(SPI_NSS_CAN5_GPIO_Port, &GPIO_InitStruct);

  /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);

中断处理:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	switch(GPIO_Pin)
	{
		case GPIO_PIN_6: //CAN4 PD6
			CAN4_R_Deal();
			break;
		case GPIO_PIN_8://CAN5 PB8
			CAN5_R_Deal();
			break;
		case GPIO_PIN_9://CAN6 PC9
			CAN6_R_Deal();
			break;
		default:break;			
	}
}

分析:

    CAN4功能正常,CAN5收不到数据,INIT都是用的EXTI9_5_IRQn,每个CANx_R_Deal()里都有个变量计数进入中断的次数。

    而CAN5中断进入次数的变量一直为1.等于上电后还进了一次。

    另外我串口打印了CAN5 INIT的状态,发现一直是低电平的,那就是说数据是到了的,但中断没有进入导致CAN5数据没有提取

    关键不用APP时CAN5中断可以正常进入。。这啥情况,其他还用了不少功能暂时没发现异常。

 

此外:

    我把CAN4的端口配置从外部中断改为普通开关输入,结果发现中断还是正常的,还能收到数据,这又啥情况,我还特意重新整体编译了一下,也还正常。。。

    GPIO_InitStruct.Mode = GPIO_MODE_INPUT

补充内容 (2024-12-17 12:01): 前天又做了个测试,把CAN4对应的中断口从CUBE中改为了开关量输入,结果APP初始化完成后就卡死了。。以前BOOT有问题时也出现过,应该是中断后死掉了。
此帖出自stm32/stm8论坛

最新回复

非常有可能这种直接寄存器跳转的语句直接被优化不执行了,这样程序就有可能乱了   详情 回复 发表于 前天 09:16
点赞 关注
 

回复
举报

645

帖子

0

TA的资源

纯净的硅(高级)

沙发
 

跳转只是跳转。不会影响其它功能

此帖出自stm32/stm8论坛

点评

但实际情况确实是改为APP就不行,改回来立刻恢复。差别就是main开头加地址偏移,设置里也改一下0x8000000那个。很奇怪的东西  详情 回复 发表于 4 天前
 
 

回复

108

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
jobszheng5 发表于 2024-12-14 18:24 跳转只是跳转。不会影响其它功能

但实际情况确实是改为APP就不行,改回来立刻恢复。差别就是main开头加地址偏移,设置里也改一下0x8000000那个。很奇怪的东西

此帖出自stm32/stm8论坛
 
 

回复

6251

帖子

9

TA的资源

版主

4
 

功能失效?会不会有部分代码被优化了?  

此帖出自stm32/stm8论坛

点评

关键是同样的设置,把APP的跳转功能去掉,功能马上恢复正常。实测就是中断进不去,我用程序轮询的方式替换中断,SPI_CAN的数据也能获取,只是轮询的太慢会丢数据。    详情 回复 发表于 3 天前
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

108

帖子

0

TA的资源

一粒金砂(中级)

5
 
秦天qintian0303 发表于 2024-12-15 00:00 功能失效?会不会有部分代码被优化了?  

关键是同样的设置,把APP的跳转功能去掉,功能马上恢复正常。实测就是中断进不去,我用程序轮询的方式替换中断,SPI_CAN的数据也能获取,只是轮询的太慢会丢数据。

 

此帖出自stm32/stm8论坛

点评

非常有可能这种直接寄存器跳转的语句直接被优化不执行了,这样程序就有可能乱了  详情 回复 发表于 前天 09:16
你写的程序在编译器转换成机械码的时候会做优化,检查一下是不是这方面的问题,我优化选项改为不优化,看看你的IDE这个设置的位置在哪里  详情 回复 发表于 前天 09:15
 
 
 

回复

6251

帖子

9

TA的资源

版主

6
 
liyancao001 发表于 2024-12-15 20:46 关键是同样的设置,把APP的跳转功能去掉,功能马上恢复正常。实测就是中断进不去,我用程序轮询的方式替 ...

你写的程序在编译器转换成机械码的时候会做优化,检查一下是不是这方面的问题,我优化选项改为不优化,看看你的IDE这个设置的位置在哪里

此帖出自stm32/stm8论坛
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

6251

帖子

9

TA的资源

版主

7
 
liyancao001 发表于 2024-12-15 20:46 关键是同样的设置,把APP的跳转功能去掉,功能马上恢复正常。实测就是中断进不去,我用程序轮询的方式替 ...

非常有可能这种直接寄存器跳转的语句直接被优化不执行了,这样程序就有可能乱了

此帖出自stm32/stm8论坛

点评

收到,感谢回复,我试试不让优化  详情 回复 发表于 昨天 11:59
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

108

帖子

0

TA的资源

一粒金砂(中级)

8
 
秦天qintian0303 发表于 2024-12-16 09:16 非常有可能这种直接寄存器跳转的语句直接被优化不执行了,这样程序就有可能乱了

收到,感谢回复,我试试不让优化

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表