打印
[应用方案]

C51 函数指针与再入函数

[复制链接]
楼主: vivilyly
手机看帖
扫描二维码
随时随地手机跟帖
21
jonas222| | 2024-8-19 11:53 | 只看该作者 回帖奖励 |倒序浏览
函数指针在C51中用于灵活地调用函数,而再入函数则是在多任务和中断驱动环境中安全使用的关键。

使用特权

评论回复
22
albertaabbot| | 2024-8-20 15:53 | 只看该作者
再入函数是可以被递归调用或在多个任务中同时被调用的函数。C51 中的再入函数通常用于中断服务程序或多任务环境。

使用特权

评论回复
23
biechedan| | 2024-8-20 16:12 | 只看该作者
再入函数是指可以被多个任务或中断服务例程同时调用而不会相互干扰的函数。在8051单片机中,由于资源有限,编写再入函数需要特别小心,以确保不会出现冲突。

使用特权

评论回复
24
mmbs| | 2024-8-20 21:53 | 只看该作者
在C51中,声明一个函数指针需要指定其返回类型、指针名称以及参数列表。例如,声明一个不带参数且返回类型为void的函数指针,可以写作void (*function_ptr) (void);。这种声明方式展示了函数指针的灵活性,即可以随时改变指向不同的函数。

使用特权

评论回复
25
everyrobin| | 2024-8-21 14:35 | 只看该作者
再入函数是指那些可以被中断服务程序(ISR)或者自己直接或间接调用的函数。

使用特权

评论回复
26
ccook11| | 2024-8-21 18:29 | 只看该作者
使用函数指针时存在一些特殊注意事项。由于8051架构的特殊性,尤其是其有限的堆栈大小(通常为128字节或更少),函数参数的传递必须采用不同的技术。

使用特权

评论回复
27
abotomson| | 2024-8-21 21:27 | 只看该作者
在设计函数时,考虑使用原子操作来避免潜在的并发问题。

使用特权

评论回复
28
vivilyly|  楼主 | 2024-8-22 10:21 | 只看该作者
再入函数需要使用堆栈来保存局部变量和函数调用的上下文信息

使用特权

评论回复
29
earlmax| | 2024-8-22 10:47 | 只看该作者
避免使用全局变量和静态变量,以减少与其他任务或中断的依赖。

使用特权

评论回复
30
10299823| | 2024-8-22 11:21 | 只看该作者
函数指针是指向函数的指针变量。通过函数指针,可以在运行时动态地决定调用哪个函数,增加了程序的灵活性。

使用特权

评论回复
31
mattlincoln| | 2024-8-22 11:56 | 只看该作者
使用局部变量来存储中间结果和数据,确保每次调用函数时都能获得独立的状态。

使用特权

评论回复
32
ccook11| | 2024-8-22 12:36 | 只看该作者
函数内部不使用全局变量或静态变量,或者在使用这些变量时采取适当的同步措施。

使用特权

评论回复
33
mollylawrence| | 2024-8-22 13:04 | 只看该作者
如果必须使用共享资源,请使用锁或其他同步机制来确保资源的互斥访问。

使用特权

评论回复
34
belindagraham| | 2024-8-22 13:31 | 只看该作者
注意函数指针的初始化和赋值,避免指向无效的函数地址。

使用特权

评论回复
35
adolphcocker| | 2024-8-22 13:59 | 只看该作者
如果函数需要访问共享资源(如全局变量或硬件寄存器),则需要通过互斥锁或其他同步机制来保护这些资源,防止同时被多个中断或任务访问。

使用特权

评论回复
36
yeates333| | 2024-8-22 14:18 | 只看该作者
再入函数通常用于多任务环境,在这种环境下,多个任务可能会并发调用同一个函数。

使用特权

评论回复
37
backlugin| | 2024-8-22 14:40 | 只看该作者

在C51编程中,函数指针和再入函数是两个重要的概念,它们在提高代码的灵活性和可重用性方面起着关键作用。

使用特权

评论回复
38
youtome| | 2024-8-22 14:59 | 只看该作者
在多任务系统中使用再入函数时,需要考虑任务切换和上下文切换的影响。

使用特权

评论回复
39
albertaabbot| | 2024-8-22 15:25 | 只看该作者
避免使用静态或全局变量。
如果必须使用全局变量,确保通过某种机制(如互斥锁)保护对这些变量的访问。
使用自动(局部)变量来保存状态。

使用特权

评论回复
40
ccook11| | 2024-8-22 15:49 | 只看该作者
再入函数的堆栈空间有限,因此应尽量减少再入函数中局部变量的使用,以节省堆栈空间。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则