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

共23条 1/3 1 2 3 跳转至

【转】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


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

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



工程师
2020-12-30 22:13:40     打赏
2楼

学习一下


工程师
2021-01-12 23:22:53     打赏
3楼

代码写的非常不错的


助工
2022-01-13 12:12:36     打赏
4楼

硬件家园可以可以



菜鸟
2022-01-13 15:57:21     打赏
5楼

点灯的门槛一下子抬高了


专家
2022-01-20 05:36:08     打赏
6楼

感谢分享


专家
2022-01-20 06:44:21     打赏
7楼

谢谢分享!


专家
2022-01-20 07:03:22     打赏
8楼

谢谢分享


专家
2022-01-20 07:21:32     打赏
9楼

谢谢分享


菜鸟
2022-01-20 07:58:25     打赏
10楼

精髓在LED_t结构体


共23条 1/3 1 2 3 跳转至

回复

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