OpenEdv-开源电子网

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

关于正点原子实验一和实验二采用模块化设计的问题

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-9-19
在线时间
10 小时
发表于 2016-9-19 17:54:38 | 显示全部楼层 |阅读模式
1金钱
     我C语言比较差,最近才开始学习,希望大家多指点,像正点原子的小实验我相信一般人都看的明白,我也大体看明白了(还需要不断的去熟悉,毕竟才开始学),现在有这个问题希望大家可以帮到我:     很多实际的做产品的列子肯定不是这么短短几行,对于很复杂的程序不可能都是在main函数内实现的吧(除初始化函数外),如果这样难度也太大了,那如果不是都在main函数中实现,那又应该怎么实现啊??比如正点原子的实验1和实验2,怎么采用模块化式的设计???对于大型的程序编写采用独立模块化的设计肯定比都写在main函数中容易。
   实验1的C语言程序:
int main(void)
{                                  
        Stm32_Clock_Init(9);
        delay_init(72);                 
        LED_Init();                         
        while(1)
        {
                LED0=0;
                LED1=1;
                delay_ms(300);
                LED0=1;
                LED1=0;
                delay_ms(300);
        }         
}


实验2
int main(void)
{                                  
        Stm32_Clock_Init(9);         //Ïμí3ê±ÖóéèÖÃ
        delay_init(72);                    //Ñóê±3õê¼»ˉ
        LED_Init();                                   //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
        BEEP_Init();                 //3õê¼»ˉ·äÃùÆ÷¶Ë¿ú
        while(1)
        {
                LED0=0;                                //μãááDS0
                BEEP=0;                                  //1رշäÃùÆ÷
                delay_ms(300);
                LED0=1;                                  //1رÕDS0
                BEEP=1;                          //′ò¿a·äÃùÆ÷
                delay_ms(300);
        }         
}


如果只是简单的把这2实验和到一个main函数中,我相信看过了实验的都会哈,主要我想知道的是怎么模块化合成一个,下面这个是不成功的列子,问题出在哪请大家指点:
int LEED(void)
{                                  
        Stm32_Clock_Init(9);
        delay_init(72);                 
        LED_Init();                         
        while(1)
        {
                LED0=0;
                LED1=1;
                delay_ms(300);
                LED0=1;
                LED1=0;
                delay_ms(300);
        }         
}


int main(void)
{                                  
        Stm32_Clock_Init(9);
        delay_init(72);                   
        LED_Init();                                  
        BEEP_Init();                
        while(1)
        {
                BEEP=0;                                 
                delay_ms(300);
                BEEP=1;                         
                delay_ms(300);
        }         
}


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

使用道具 举报

3

主题

548

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1383
金钱
1383
注册时间
2015-2-3
在线时间
197 小时
发表于 2016-9-19 21:20:21 | 显示全部楼层
你这才刚学,没必要纠结模块化设计。
模块化设计其实要做到的就是让一部分紧密联系的功能尽量集中,同时与其他的模块相关性越低越好,从而实现更高的可移植性、可重用性可维护性、可靠性。
你这程序不叫模块化设计,你把LED和BEEP两个不同的功能放在了同一函数里面,耦合程度反而提高了。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-9-19
在线时间
10 小时
 楼主| 发表于 2016-9-19 21:58:02 | 显示全部楼层
谢谢您的热情解答,我是想先通过这个列子来理解模块化设计,因为我完全没理解这个,并且对于现在我们的有款产品,我不知道应该怎么去分析它,所以得先把这个搞清楚了,才知道总的框架,我学习一般都是先理解框架再深入去学习,如果这些框架没了解,对于很多问题都没办法去解决啊,希望还是告知应该怎么改。先谢谢了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 06:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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