[应用相关]

单片机脚位不同,如何让一系列产品使用同一个程序?

[复制链接]
1287|19
手机看帖
扫描二维码
随时随地手机跟帖
CYJMCU|  楼主 | 2016-7-25 22:01 | 显示全部楼层 |阅读模式

一个系列的产品,MCU外围硬件电路相同。但是为了每种型号的产品PCB Layout方便,对单片机的脚位pin进行了相应调整。如:ADC通道 和数字IO引脚。为了以后的这一系列产品程序升级方便,如何让不同的产品型号共用这一个程序?现在想到的一个办法就是设置一个变量,通过判断这个变量来判断产品型号,从而执行相应脚位。如:
switch(ProducSign)//判断产品型号
{
    case 0:
    {
    GPIO_PinOutSet(gpioPortC, 3);
    break:
    }
   case 1:
    {
    GPIO_PinOutSet(gpioPortD, 2);
    break:
    }
    case 2:
    {
    GPIO_PinOutSet(gpioPortC, 5);
    break:
    }
    default:
    break;
}

请问除了这个办法还有其他办法吗?  运行周期越短越好。
kk118a| | 2016-7-25 22:06 | 显示全部楼层
映射,底层和应用层是区分开的

使用特权

评论回复
CYJMCU|  楼主 | 2016-7-25 22:40 | 显示全部楼层
kk118a 发表于 2016-7-25 22:06
映射,底层和应用层是区分开的

还是要在程序中进行逻辑判断对吧? 就像我上面写的那中demo一样?

使用特权

评论回复
kk118a| | 2016-7-25 22:44 | 显示全部楼层
是的

使用特权

评论回复
icecut| | 2016-7-25 23:08 | 显示全部楼层
外挂的标记.不可改动的.

使用特权

评论回复
Jsilcon| | 2016-7-25 23:19 | 显示全部楼层
有多余的管脚,连起来。启动时,一收一发,验证版本。

使用特权

评论回复
xyz549040622| | 2016-7-26 07:34 | 显示全部楼层
如何让不同的产品型号共用这一个程序?与其这么做,不如重新写程序,修改下IO的配置就好了,或者加跳线帽切换,判断外部的跳线位置。

使用特权

评论回复
wenunit| | 2016-7-26 08:21 | 显示全部楼层
写一个可配置的程序.

使用特权

评论回复
wind~风| | 2016-7-26 08:56 | 显示全部楼层
条件编译

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
ocon + 2 赞一个!
mmuuss586| | 2016-7-26 09:03 | 显示全部楼层
只能这样,用条件编译也差不多的;

使用特权

评论回复
CYJMCU|  楼主 | 2016-7-26 09:47 | 显示全部楼层

那样最终还是要生成多个程序,通过编译器宏定义来判断

使用特权

评论回复
huarana| | 2016-7-26 09:53 | 显示全部楼层
xyz549040622 发表于 2016-7-26 07:34
如何让不同的产品型号共用这一个程序?与其这么做,不如重新写程序,修改下IO的配置就好了,或者加跳线帽切 ...

一般很少向楼主说的这么做

一般都是单片机上的io定下来可以延伸到不同产品上。不可能为了好走线而改动脚位。

因为走线再难也是几分钟的事,随便搞一下就行。但是代码要兼容很多种io 那工作量太大了 - -!


所以我们都会有模板,不但程序有  原理图平台脚位也有,固定的永远不要变,可变的就是原来没使用的管脚你可以用来完成新的功能。

这样一份代码可以移植到不同产品上 而不用管底层io配置之类的。

使用特权

评论回复
nstel| | 2016-7-26 10:08 | 显示全部楼层
PCB Layout就那么难吗?

使用特权

评论回复
mohanwei| | 2016-7-26 10:18 | 显示全部楼层
这个理由太奇葩了,现在连打样的的线宽线距指标都下探到3mil了,对MCU那点电压来说根本不用考虑爬电什么的,多打几个过孔的事……
你可以在一些功能固定的输出IO上增加上拉/下拉电阻,上电时先设为输入,读取状态作为型号/版本号(然后根据这个来配置),再改回输出。

使用特权

评论回复
ticomi| | 2016-7-26 10:49 | 显示全部楼层
在编程时可以使用条件编译,在运行时识别可以使用函数指针数组或者结构体等。
办法由很多,指针是效率最高的,但是会使应用程序的体积很大,最佳的方案就是条件编译。

使用特权

评论回复
457344370| | 2016-7-26 18:02 | 显示全部楼层
驱动层 硬件抽象层 应用层分开,不同的芯片或者硬件只需要把驱动和抽象层替掉就可以了

使用特权

评论回复
shcshc1234| | 2016-7-26 22:31 | 显示全部楼层
定义一个#define 型号
#ifdef xxx型号
代码1
#ifdef xxx
代码2

使用特权

评论回复
lwsn| | 2016-7-27 08:18 | 显示全部楼层
需要修改IO的配置吧

使用特权

评论回复
lefeng| | 2016-7-27 09:07 | 显示全部楼层
楼主在顶楼的程序好用吗

使用特权

评论回复
拉克丝| | 2016-7-27 09:52 | 显示全部楼层
条件编译怎么做

使用特权

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

本版积分规则

21

主题

110

帖子

4

粉丝