硬汉嵌入式论坛

 找回密码
 立即注册
查看: 141|回复: 1
收起左侧

[技术讨论] STM32F4 函数指针异常,请求大神看看啥原因

[复制链接]

5

主题

11

回帖

26

积分

新手上路

积分
26
发表于 6 天前 | 显示全部楼层 |阅读模式
本人最近写一个软件IIC的 .c .h的文件(文件名定义为bsp_softiic),想做成易于移植的形式,于是软件IIC中对实际硬件的SDA、SCL引脚的电平控制,就写成了通过函数指针的形式传入,SDA、SCL引脚的电平控制封装成函数,然后对应的函数地址作为参数传入,供软件IIC调用,但是昨晚测试时发现个问题,SDA引脚的高电平控制函数传入后,通过串口打印检查相对应的地址,都正确,但在解引用这个函数指针的时候确跳到了另一个传入的函数中去执行,Debug的时候才发现。
具体的程序如下,是在F401RE的NUCLEO评估板上跑的。
在bsp_ahs.c文件中定义了相对应的SDA、SCL引脚高低电平控制函数,同时定义有SDA引脚的电平读取函数,以上函数通过bsp_softiic对外提供的Init_Softiic_HardwarePort函数传入,但是在参数检查都正确的情况下,bsp_softiic中调用了SDA引脚的高平输出函数时会跳转到SDA的获取电平函数。

以上函数通过,传入后,将对应函数地址赋予bsp_softiic.c文件中的对应的文件域函数指针,但调用SDA引脚输出高电平时,却会跳转到SDA的获取电平函数中,也就是应该跳转到SDA_Ohigh函数却跳转到了SDA_G3函数中


DAC1220.7z

1.19 MB, 下载次数: 5

整个工程

回复

使用道具 举报

5

主题

11

回帖

26

积分

新手上路

积分
26
 楼主| 发表于 昨天 17:15 | 显示全部楼层
搞定,把函数传进来的参数放在可变参参数相关的操作后面就正常了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-8 09:58 , Processed in 0.246817 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表