打印
[STM32F1]

急求stm32f103的程序下载问题

[复制链接]
1845|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
现状:一个电路板内有两片单片机,分别控制左轮电机和右轮电机,两个电机的硬件电路及功能几乎一样,但是两个电机的ID地址不一样。
希望:以前是左右轮电机分别烧写不同hex文件的程序,现在希望程序合二为一,程序中通过检测单片机一个GPIO的高低电平,来选择程序下载到左侧或右侧单片机。
问题:IO高低电平判断后的下载函数怎么写?
沙发
zhaoyu2005| | 2017-5-3 11:39 | 只看该作者
估计你实现不了。为甚么当初不做成:一样的程序,根据引脚电平判断是左轮还是右轮,然后执行

使用特权

评论回复
板凳
ime就是爱自己|  楼主 | 2017-5-3 12:02 | 只看该作者
zhaoyu2005 发表于 2017-5-3 11:39
估计你实现不了。为甚么当初不做成:一样的程序,根据引脚电平判断是左轮还是右轮,然后执行 ...

程序是我接手之前有人写好的,当时是两个单片机烧不同的hex。
现在为了将程序合二为一,电路板上两个单片机都使用一个GPIO脚,左侧为输入高电平,右侧为输入低电平。
上电后检测该IO脚为高电平,则左侧下载;低电平,则右侧下载。这应该可以实现的吧。

使用特权

评论回复
地板
ime就是爱自己|  楼主 | 2017-5-3 12:04 | 只看该作者
zhaoyu2005 发表于 2017-5-3 11:39
估计你实现不了。为甚么当初不做成:一样的程序,根据引脚电平判断是左轮还是右轮,然后执行 ...

高低电平确定后,程序下载的函数不会写。您知道怎么写吗?

使用特权

评论回复
评论
zhaoyu2005 2017-5-3 12:26 回复TA
从原理上可以实现,但是做起来有难度 
5
mmuuss586| | 2017-5-3 12:49 | 只看该作者
那你就些BOOT程序;
还是很复杂的,你搞不定;

使用特权

评论回复
6
ime就是爱自己|  楼主 | 2017-5-3 13:12 | 只看该作者
mmuuss586 发表于 2017-5-3 12:49
那你就些BOOT程序;
还是很复杂的,你搞不定;

这是个任务,需要解决。
虽然不容易,也躲不过去,只能一点一点地去解决掉。

使用特权

评论回复
7
ime就是爱自己|  楼主 | 2017-5-3 13:32 | 只看该作者
mmuuss586 发表于 2017-5-3 12:49
那你就些BOOT程序;
还是很复杂的,你搞不定;

硬件上左侧的IO已经拉高,右侧的IO已经拉低。
上电后,立刻就能检测出左侧还是右侧。然后就启动下载。
您知道启动下载大概需要写哪些点吗?

使用特权

评论回复
8
胡慧海| | 2017-5-3 16:02 | 只看该作者
你可以看看串口IAP下载的知识,对你有帮助。不过问题来了,你的这俩个hex文件存在哪里呢?假如是为了实现一个电机有多种任务方式。为什么不用rtos呢

使用特权

评论回复
9
andyding| | 2017-5-3 17:32 | 只看该作者
用拨码开关编写一下电机ID地址,一套程序就好了

使用特权

评论回复
10
mmuuss586| | 2017-5-3 20:52 | 只看该作者
ime就是爱自己 发表于 2017-5-3 13:12
这是个任务,需要解决。
虽然不容易,也躲不过去,只能一点一点地去解决掉。 ...

那你只能看官方的在线升级程序了;

或者参考一些开发板的厂家的参考代码,也许有例程;

使用特权

评论回复
11
xiao_long| | 2017-5-3 23:02 | 只看该作者
为什么不换个方式,用同一个程序,在程序里判断IO口的高低,来执行不同的涵数。这样应该很容易实现。

使用特权

评论回复
12
qnmdsb2008| | 2017-5-4 00:38 | 只看该作者
这个需要了解IAP功能,同时所谓的下载功能也多着呢。一个可以考虑用串口或者类似端口接收数据包,一个可以模拟jtag或者SWD波形的方式做。提供程序的单片机需要对单片机Flash分区写操作,或者考虑外扩flash,把程序代码数据先存好,然后根据IO电平选择读flash的地址。接收的单片机将收到程序数据写入单片机指定区域flash,单片机接收完毕复位要做的操作就是从指定flash区域执行程序。不知道这么说 容易理解吗?

使用特权

评论回复
13
ime就是爱自己|  楼主 | 2017-5-8 18:40 | 只看该作者
andyding 发表于 2017-5-3 17:32
用拨码开关编写一下电机ID地址,一套程序就好了

嗯,思路相似。

使用特权

评论回复
14
ime就是爱自己|  楼主 | 2017-5-8 18:41 | 只看该作者
xiao_long 发表于 2017-5-3 23:02
为什么不换个方式,用同一个程序,在程序里判断IO口的高低,来执行不同的涵数。这样应该很容易实现。 ...

是用这样的方式

使用特权

评论回复
15
ime就是爱自己|  楼主 | 2017-5-8 18:41 | 只看该作者
qnmdsb2008 发表于 2017-5-4 00:38
这个需要了解IAP功能,同时所谓的下载功能也多着呢。一个可以考虑用串口或者类似端口接收数据包,一个可以 ...

刚开始我理解有点偏差,其实没有这么复杂。

使用特权

评论回复
16
七颗咖啡豆| | 2017-5-9 17:44 | 只看该作者
你提出这个问题,估计你自己肯定搞不定了。
方法:用另第三个个MCU模拟PC串口下载hex文件即可

使用特权

评论回复
17
wwppd| | 2017-5-9 23:09 | 只看该作者
使用中断能不能判断?

使用特权

评论回复
18
wwppd| | 2017-5-9 23:14 | 只看该作者
两个hex怎么下载到同一个芯片里面?

使用特权

评论回复
19
Stannis| | 2017-5-10 21:53 | 只看该作者
根据引脚电平判断是左轮还是右轮

使用特权

评论回复
20
hudi008| | 2017-5-10 23:41 | 只看该作者
程序合并?这个怎么可能实现。

使用特权

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

本版积分规则

4

主题

16

帖子

0

粉丝