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

[复制链接]
2038|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

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部