OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3960|回复: 5

在51和STM32单片机上使用面向对象的编程,第五篇:继承(可以进化的LED)

[复制链接]

8

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2018-5-2
在线时间
83 小时
发表于 2018-6-30 15:20:09 | 显示全部楼层 |阅读模式
这篇的内容比较简单,就是继承的实现
我们先说继承的概念, 这里就像是父子的概念,儿子从父亲的基因里面继承了很多相同的东西, 父亲有的儿子都有,但是儿子毕竟青出于蓝胜于蓝 也有它的不同之处;
这里在单片机中的具体应用,比如说LED,我们前面介绍有端口等属性 和闪烁 设置状态等方法函数;
那么 我们如果要创建一个呼吸灯类 是不是 也要用到 端口,设置状态 这些呢?
答案当然是的,这些相同部分的代码 我们就不需要重新去写了;
具体上代码:
[mw_shl_code=c,true]typedef struct CLASS_LED
{   
  void  (* const  SetLedGPIOCMD)(struct CLASS_LED * p, GPIO_TypeDef* GPIOx, u16 GPIO_Pin);  //éèÖÃLED¶Ë¿ú  
  void  (* const  LED_SetST)(struct CLASS_LED * p,u8 LED_ST);   
  struct CLASS_LEDBlink * LEDBlink;
  GPIO_TypeDef* _GPIOx;
  u16 _GPIO_Pin;
  u8 _LED_ST;
}typ_CLASS_LED;[/mw_shl_code]

[mw_shl_code=applescript,true]typedef struct CLASS_Breathe_LED
{
  typ_CLASS_LED Basic; //基类 父类  (继承LED类)
  void (* const set_duty_cycle)(struct CLASS_Breathe_LED * p, u8 value);//设置占空比
  void (* add_duty_cycle)(struct CLASS_Breathe_LED * p); //增加占空比
  void (* Less)(struct CLASS_Breathe_LED * p); //减少占空比
  u8 value;  //当前占空比
}typ_CLASS_Breathe_LED;[/mw_shl_code]

这样就可以了,具体使用代码晚一点再补充

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
490
金钱
490
注册时间
2018-5-28
在线时间
126 小时
发表于 2018-6-30 16:25:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

58

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2387
金钱
2387
注册时间
2017-1-15
在线时间
318 小时
发表于 2018-8-21 16:04:52 | 显示全部楼层
楼主,最近有更新吗,期待你的大作
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-4-18
在线时间
10 小时
发表于 2019-11-23 09:12:36 | 显示全部楼层
本帖最后由 786005498 于 2019-11-23 09:15 编辑

支持楼主
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2019-8-29
在线时间
8 小时
发表于 2020-3-11 20:08:59 | 显示全部楼层
期待你神气的代码
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2020-8-10
在线时间
0 小时
发表于 2020-8-10 11:28:40 | 显示全部楼层
期待楼主又更好的作品
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 14:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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