这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【转】STM32实战项目-HAL裸机开发01-回调函数流水灯

共1条 1/1 1 跳转至

【转】STM32实战项目-HAL裸机开发01-回调函数流水灯

工程师
2020-12-28 10:03:59     打赏


大家好!我是天天爱笑的肖小笑

本次给大家带来的是STM32基于HAL库开发,如何用回调函数实现流水灯。

开发所用的芯片为:stm32f103c8t6;话不多说,开始整活儿。

一、先熟悉一下硬件电路

1609143315848930.png

灯亮 - GPIO输出高电平

灯灭 - GPIO输出低电平

二、技术讲解

1.回调函数

一般解释:回调函数就是一个通过函数指针调用的函数。如果你把函数的地址传递给中间函数的形参,中间函数通过函数指针调用其所指向的函数时,我们就说这是回调函数。

通俗解释:函数Fun1调用函数Fun2,同时将函数Fun3作为形参传递给Fun2,此时,Fun1为应用层函数,Fun2为中间层函数,Fun3为回调函数,回调函数是一种说法而已。

伪代码:

Fun1()

{

    Fun2(Fun3);

}

意义何在:

① 利于代码结构,将代码分为应用层,中间层,硬件驱动层,彼此独立,方便程序的编辑,阅读,修改与移植;

② 结构化编程时,结构体只需要定义中间函数,减小内存的开销。

为什么不在Fun2里面直接调用Fun3?

伪代码:

Fun1()

{

    Fun2()

    {   

        Fun3_1();

        Fun3_2();

        ...... 

    }

}

通过函数指针的好处是,Fun2与Fun3实现隔离,比如Fun3具有多个功能函数,增加或减少时,不需要修改Fun2的代码。

2.代码实现

1609143568597599.jpg

<h文件>

1609143596299825.jpg

<中间函数>

1609143619588274.jpg

<底层驱动函数>

1609143640498081.jpg

<应用层>


三、HAL库函数

1609143677900782.jpg

说明:视频详细讲解各个函数以及应用情况。

四、编程说明

1、STM32cubeMX初始化

1609143715243827.jpg

说明:初始化3个LED灯为推挽输出,默认高电平,亮灯。

2、文件结构如下

1609143736755926.jpg

说明,程序在标准的程序框架基础上设计。

3、运行函数

1609143757634277.jpg


非常感谢大家的支持,我会尽我最大的能力将最好的资源带给大家。一起加油吧!

本贴属于转载,如有侵权请联系删除。



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]