OpenEdv-开源电子网

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

STM32F103 串口IAP + 升级终端,心得分享

  [复制链接]

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-11-27 15:53:11 | 显示全部楼层
asianeast 发表于 2017-11-27 09:40
flash.c里面确实没有这个table表  
另外DATA_CRC函数也屏蔽掉了   因此如果用现在的上位机   就没法使用 ...

u16 DATA_CRC(u8 * data,u16 len)
{
   u16 crc=0;
   u8 da;
   while(len--!=0)
    {
       da=(unsigned short)crc>>8;
        crc<<=8;     
        crc^=crc_ta[da^*data];  
        data++;
      }
   return crc;
}


这个函数就是用来产生CRC校验值的函数,数据输入后产生的校验值是能够在Table里查到的,上位机里面的函数和table表跟这个是一样的
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-11-27 15:57:38 | 显示全部楼层
asianeast 发表于 2017-11-27 09:40
flash.c里面确实没有这个table表  
另外DATA_CRC函数也屏蔽掉了   因此如果用现在的上位机   就没法使用 ...

7楼的那个通讯协议就是全部的通讯协议,你写代码严格按照那个来就行了
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-11-27 17:38:21 | 显示全部楼层
本帖最后由 asianeast 于 2017-11-27 17:41 编辑
BJTT 发表于 2017-11-27 15:53
u16 DATA_CRC(u8 * data,u16 len)
{
   u16 crc=0;

11.rar (1.2 KB, 下载次数: 156)
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-11-28 10:26:25 | 显示全部楼层
asianeast 发表于 2017-11-27 17:38
楼主    按照你的校验表做了一下测试  感觉和上位机发送出来的校验值还是对不上
比如 这样一个bin ...

你是开了那个debug mode吗?发送之后,把上位机截图给我看看
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-11-28 11:32:07 | 显示全部楼层
BJTT 发表于 2017-11-28 10:26
你是开了那个debug mode吗?发送之后,把上位机截图给我看看

因为CRC校验不通过  我用串口助手调试看看上位机的状态 1.png 2.png

测试的bin文件我也发送出来 ,各种长度的bin文件我都试过,都是不对 ,现在这个是其中的一个例子

1.rar (90 Bytes, 下载次数: 152)
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-11-28 11:35:03 | 显示全部楼层
BJTT 发表于 2017-11-28 10:26
你是开了那个debug mode吗?发送之后,把上位机截图给我看看

debug  mode   和 CRC校验应该是不影响的
现在就是不知道为什么下位机的CRC校验和上位机的就是对不上   
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-11-28 20:48:12 | 显示全部楼层
asianeast 发表于 2017-11-28 11:35
debug  mode   和 CRC校验应该是不影响的
现在就是不知道为什么下位机的CRC校验和上位机的就是对不上

不好意思,项目有点儿多,我给你发错Table表了
我查看了我的上位机代码,发现是CRC8校验,你算出来的9B是在里面的

下面是table表
        byte[] CRC8_Tbl = new byte[]
        {
           0x00 ,0x5E ,0xBC ,0xE2 ,0x61 ,0x3F ,0xDD ,0x83 ,0xC2 ,0x9C ,0x7E ,0x20 ,0xA3 ,0xFD ,0x1F ,0x41 ,
           0x9D ,0xC3 ,0x21 ,0x7F ,0xFC ,0xA2 ,0x40 ,0x1E ,0x5F ,0x01 ,0xE3 ,0xBD ,0x3E ,0x60 ,0x82 ,0xDC ,
           0x23 ,0x7D ,0x9F ,0xC1 ,0x42 ,0x1C ,0xFE ,0xA0 ,0xE1 ,0xBF ,0x5D ,0x03 ,0x80 ,0xDE ,0x3C ,0x62 ,
           0xBE ,0xE0 ,0x02 ,0x5C ,0xDF ,0x81 ,0x63 ,0x3D ,0x7C ,0x22 ,0xC0 ,0x9E ,0x1D ,0x43 ,0xA1 ,0xFF ,
           0x46 ,0x18 ,0xFA ,0xA4 ,0x27 ,0x79 ,0x9B ,0xC5 ,0x84 ,0xDA ,0x38 ,0x66 ,0xE5 ,0xBB ,0x59 ,0x07 ,
           0xDB ,0x85 ,0x67 ,0x39 ,0xBA ,0xE4 ,0x06 ,0x58 ,0x19 ,0x47 ,0xA5 ,0xFB ,0x78 ,0x26 ,0xC4 ,0x9A ,
           0x65 ,0x3B ,0xD9 ,0x87 ,0x04 ,0x5A ,0xB8 ,0xE6 ,0xA7 ,0xF9 ,0x1B ,0x45 ,0xC6 ,0x98 ,0x7A ,0x24 ,
           0xF8 ,0xA6 ,0x44 ,0x1A ,0x99 ,0xC7 ,0x25 ,0x7B ,0x3A ,0x64 ,0x86 ,0xD8 ,0x5B ,0x05 ,0xE7 ,0xB9 ,
           0x8C ,0xD2 ,0x30 ,0x6E ,0xED ,0xB3 ,0x51 ,0x0F ,0x4E ,0x10 ,0xF2 ,0xAC ,0x2F ,0x71 ,0x93 ,0xCD ,
           0x11 ,0x4F ,0xAD ,0xF3 ,0x70 ,0x2E ,0xCC ,0x92 ,0xD3 ,0x8D ,0x6F ,0x31 ,0xB2 ,0xEC ,0x0E ,0x50 ,
           0xAF ,0xF1 ,0x13 ,0x4D ,0xCE ,0x90 ,0x72 ,0x2C ,0x6D ,0x33 ,0xD1 ,0x8F ,0x0C ,0x52 ,0xB0 ,0xEE ,
           0x32 ,0x6C ,0x8E ,0xD0 ,0x53 ,0x0D ,0xEF ,0xB1 ,0xF0 ,0xAE ,0x4C ,0x12 ,0x91 ,0xCF ,0x2D ,0x73 ,
           0xCA ,0x94 ,0x76 ,0x28 ,0xAB ,0xF5 ,0x17 ,0x49 ,0x08 ,0x56 ,0xB4 ,0xEA ,0x69 ,0x37 ,0xD5 ,0x8B ,
           0x57 ,0x09 ,0xEB ,0xB5 ,0x36 ,0x68 ,0x8A ,0xD4 ,0x95 ,0xCB ,0x29 ,0x77 ,0xF4 ,0xAA ,0x48 ,0x16 ,
           0xE9 ,0xB7 ,0x55 ,0x0B ,0x88 ,0xD6 ,0x34 ,0x6A ,0x2B ,0x75 ,0x97 ,0xC9 ,0x4A ,0x14 ,0xF6 ,0xA8 ,
           0x74 ,0x2A ,0xC8 ,0x96 ,0x15 ,0x4B ,0xA9 ,0xF7 ,0xB6 ,0xE8 ,0x0A ,0x54 ,0xD7 ,0x89 ,0x6B ,0x35
        };

先给你C#的函数吧,你自己可以照着写个C的出来,或者我明天再给你找找C的
        private void Generate_CRC_Table()
        {
            int i,j;
            byte temp;
            byte poly = 0x8c;         
            for (i = 0; i < 256; i++)
            {
                CRC_Table = (byte)i;
            }

            for (i = 0; i < 256; i++)
            {
                for (j = 7; j >= 0; j--)
                {
                    temp = (byte)(CRC_Table & 0x01);//take the last bit  
                    if (temp == 0x1)
                    {
                        CRC_Table = (byte)(CRC_Table >> 1);
                        CRC_Table ^= poly;
                    }
                    else
                    {
                        CRC_Table = (byte)(CRC_Table >> 1);
                    }
                }
                LOG.Text += "0x" + CRC_Table.ToString("X2") + " ,";
            }
        }
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-11-29 11:06:47 | 显示全部楼层
BJTT 发表于 2017-11-28 20:48
不好意思,项目有点儿多,我给你发错Table表了
我查看了我的上位机代码,发现是CRC8校验,你算出来的9B ...

    多谢     校验码已经验证通过了     
给楼主赞一个
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2014-1-15
在线时间
10 小时
发表于 2017-11-30 10:51:32 | 显示全部楼层
楼主,你好。你这个上位机软件只能在WIN 64位系统下运行吗?
回复 支持 反对

使用道具 举报

2

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
243
金钱
243
注册时间
2016-3-9
在线时间
110 小时
发表于 2017-11-30 12:48:00 | 显示全部楼层
MAKE 一 下!!!!
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-11-30 13:28:16 | 显示全部楼层
逝影 发表于 2017-11-30 10:51
楼主,你好。你这个上位机软件只能在WIN 64位系统下运行吗?

我是在win7  64bit的系统运行是可以的
其他的没试过
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-11-30 17:37:16 | 显示全部楼层
逝影 发表于 2017-11-30 10:51
楼主,你好。你这个上位机软件只能在WIN 64位系统下运行吗?

附件里面的是只能在64位下运行,你要是需要,我可以release 一版 32位的
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2013-6-1
在线时间
43 小时
发表于 2017-11-30 21:35:41 | 显示全部楼层
真心感觉给力  先收藏下
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-12-1 09:11:13 | 显示全部楼层
BJTT 发表于 2017-11-28 20:48
不好意思,项目有点儿多,我给你发错Table表了
我查看了我的上位机代码,发现是CRC8校验,你算出来的9B ...

楼主   上位机的软件能增加一个串口波特率设置功能么?
上位机的程序确实写不来       
如果波特率能改   适用的范围会更广一点
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-12-1 21:18:23 | 显示全部楼层
asianeast 发表于 2017-12-1 09:11
楼主   上位机的软件能增加一个串口波特率设置功能么?
上位机的程序确实写不来      
如果波特率能 ...

一个串口的问题不是特别大,115200,还好吧
主要是因为我使用的串口基本都是设置115200的,也懒得改了
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-12-2 08:56:30 | 显示全部楼层
BJTT 发表于 2017-12-1 21:18
一个串口的问题不是特别大,115200,还好吧
主要是因为我使用的串口基本都是设置115200的,也懒得改了

传到帖子上的上位机波特率是460800的
如果不能设置波特率  下位机如果只有一个串口且已经使用的情况下
就没法升级了
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-12-3 12:44:09 | 显示全部楼层
asianeast 发表于 2017-12-2 08:56
传到帖子上的上位机波特率是460800的
如果不能设置波特率  下位机如果只有一个串口且已经使用的情况 ...

我记得是115200的,这个波特率的设置并没有啥影响

谁说一个串口不行的,你的BootLoader程序可以把串口初始化成115200的,然后你自己的程序初始化成其他波特率的不就行了吗
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-12-4 09:09:40 | 显示全部楼层
BJTT 发表于 2017-12-3 12:44
我记得是115200的,这个波特率的设置并没有啥影响

谁说一个串口不行的,你的BootLoader程序可以把串口 ...

首先传到网上的上位机确实是460800的波特率
另外如果只有一个串口且已经使用  比如串口是9600的波特率
我的理解是  如果是在APP1里想通过上位机将最新的APP2载入FLASH
APP1需要一个进入boot的指令  比如上位机的协议 AA AA AA AA
此时只能先用串口调试助手用9600的波特率发送AA AA AA AA 给APP1让APP1清掉FLAG
进入BOOT程序  此时BOOT程序用的是460800的波特率采用上位机进行IAP的操作
这样也是可以进行操作的  这也是我理解的上位机如果不能更改波特率的适应性
不知道现在的理解是否正确?   还是我在操作的过程中有些地方没有完全理解?
最近正好想了解下IAP的过程  但苦于上位机确实没有  只能先用LZ的
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-12-4 14:30:20 | 显示全部楼层
asianeast 发表于 2017-12-4 09:09
首先传到网上的上位机确实是460800的波特率
另外如果只有一个串口且已经使用  比如串口是9600的波特率
...

不好意思,我查看了一下代码,是460800的
你的理解是正确的
但是我的上位机,当你点击  连接设备  后,所有的串口选择项都会被冻结,没法更改了的,直到升级完成或者升级失败,才会释放

但是为什么不能统一一下波特率呢?跟我的上位机一样就可以了嘛
回复 支持 1 反对 0

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-12-4 14:58:23 | 显示全部楼层
BJTT 发表于 2017-12-4 14:30
不好意思,我查看了一下代码,是460800的
你的理解是正确的
但是我的上位机,当你点击  连接设备  后, ...

对于串口功能很多时候是和另外的设备进行通讯的   波特率压根就不是一方能确定下来的
所以才建议弄一个上位机的串口波特率可调  在打开串口前进行设置
这样就能根据实际情况灵活运用       不知可否增加?
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2017-5-16
在线时间
14 小时
发表于 2017-12-5 11:12:55 | 显示全部楼层
MARK!!!!!!!
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-12-5 23:11:03 | 显示全部楼层
asianeast 发表于 2017-12-4 14:58
对于串口功能很多时候是和另外的设备进行通讯的   波特率压根就不是一方能确定下来的
所以才建议弄一个 ...

最近有点儿忙,忙完这阵子,我可以加一下这个功能
回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-12-6 08:37:22 | 显示全部楼层
BJTT 发表于 2017-12-5 23:11
最近有点儿忙,忙完这阵子,我可以加一下这个功能

回复 支持 反对

使用道具 举报

0

主题

39

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2017-4-14
在线时间
56 小时
发表于 2017-12-6 08:41:33 | 显示全部楼层
支持:P
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-12-6 23:01:10 | 显示全部楼层
本帖最后由 BJTT 于 2017-12-6 23:04 编辑

由于某些同志的要求,现在添加了波特率选项,可以选择不同的波特率

但是注意,在发数据的时候千万别手贱去换波特率

17.12.6

STM32 USART IAP TERMINAL.zip

13.16 KB, 下载次数: 2237

添加波特率选项

回复 支持 1 反对 0

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-12-6 23:15:46 | 显示全部楼层
this version is suitable for X86 32bit platform

X86 STM32 USART IAP TERMINAL .zip

13.16 KB, 下载次数: 1356

32位系统可用

回复 支持 反对

使用道具 举报

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1820
金钱
1820
注册时间
2015-11-30
在线时间
255 小时
发表于 2017-12-7 13:41:22 | 显示全部楼层
BJTT 发表于 2017-12-6 23:01
由于某些同志的要求,现在添加了波特率选项,可以选择不同的波特率

但是注意,在发数据的时候千万别手贱 ...

赞一个
回复 支持 反对

使用道具 举报

9

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
金钱
426
注册时间
2011-7-11
在线时间
49 小时
发表于 2017-12-11 16:13:16 | 显示全部楼层
大神,我一直想用C#写个上位机,可以分享你C#中读取bin文件的那部分代码吗,或者分享个读取bin文件的例子也行
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2017-12-11 22:09:02 | 显示全部楼层
chenyh85 发表于 2017-12-11 16:13
大神,我一直想用C#写个上位机,可以分享你C#中读取bin文件的那部分代码吗,或者分享个读取bin文件的例子也 ...

c#里面都有很多现成的函数调用就行了,总之多问度娘
自己钻研一下就出来了

[mw_shl_code=csharp,true]            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Multiselect = false;
            dialog.Title = "请选择文件";
            dialog.Filter = "所有文件(*.*)|*.*|BIN文件(*.bin)|*.bin|HEX文件(*.hex)|*.hex|文本文件(*.txt)|*.txt";
            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                FILE_PATH_TB.Text = dialog.FileName.ToString();
                this.FILE_PATH_TB.Focus();
                this.FILE_PATH_TB.Select(this.FILE_PATH_TB.Text.Length, 0);
                this.FILE_PATH_TB.ScrollToCaret();
            }
            else
                return;
            FileStream file = new FileStream(FILE_PATH_TB.Text.ToString(), FileMode.Open, FileAccess.Read);
            FILE_SIZE = Convert.ToInt32(file.Length);
            if(FILE_SIZE > 16777215)               //the maximum size of file is 15M
            {
                MessageBox.Show("软件不支持过大的文件!!", "错误");
                FILE_SIZE = 0;
                FILE_PATH_TB.Text = "";
                file.Close();
                return;
            }[/mw_shl_code]
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-12-20
在线时间
4 小时
发表于 2018-1-10 20:55:53 | 显示全部楼层
@BJTT你好,有个问题想请教一下。您的升级思路是用到两个APP区域,每次升级都换一个APP区域。那么有一个问题,因为APP编译的时候要确定中断向量位置,这个位置只能在编译生成时确定。那么这个APP再第一次升级和第二次升级的时候写入flash的位置不同,这就造成了矛盾,请问您是怎么解决这个问题的?不知道我有没有描述清楚。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-12-20
在线时间
4 小时
发表于 2018-1-10 23:48:58 | 显示全部楼层
也就是SCB->VTOR这个,在每个APP里面需要设定一个跳转地址吧,并且这个跳转地址是固定的吧?
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2017-10-1
在线时间
23 小时
发表于 2018-1-11 08:58:22 | 显示全部楼层
楼主真好
回复 支持 反对

使用道具 举报

102

主题

318

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1876
金钱
1876
注册时间
2011-12-21
在线时间
545 小时
发表于 2018-1-11 11:55:40 | 显示全部楼层
我一直觉得,放置两个APP是没有必要的,完全可以只留一个APP,如果更新出错直接停留在bootload状态
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2018-1-12 22:32:31 | 显示全部楼层
玻璃之城2046 发表于 2018-1-11 11:55
我一直觉得,放置两个APP是没有必要的,完全可以只留一个APP,如果更新出错直接停留在bootload状态

两个APP,即使升级不成功,也能恢复到原程序
还不至于啥都么有了
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2018-1-13 14:02:08 | 显示全部楼层
fire_xxl 发表于 2018-1-10 23:48
也就是SCB->VTOR这个,在每个APP里面需要设定一个跳转地址吧,并且这个跳转地址是固定的吧?

就是说,每次需要升级的时候,都要更改前面的那个VTOR的值。
这个是很简单的,你保存好两个工作文件就行了
一个A区,一个B区的
升级的时候交替修改就行
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-1-18
在线时间
1 小时
发表于 2018-1-19 11:44:09 | 显示全部楼层
楼主,能否把这个工程的BTN.C 和BTN.C发来看看,万分感谢。我的邮箱:602195098@qq.com
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1019
金钱
1019
注册时间
2017-8-13
在线时间
88 小时
发表于 2018-1-25 15:54:36 | 显示全部楼层
感谢楼主,学习中。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-1-31
在线时间
3 小时
发表于 2018-1-31 20:08:28 | 显示全部楼层
mark一下,正在学习STM32F072的IAP设计,茫然中……
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2018-1-31 20:24:51 | 显示全部楼层
sz168gd 发表于 2018-1-19 11:44
楼主,能否把这个工程的BTN.C 和BTN.C发来看看,万分感谢。我的邮箱:602195098@qq.com

btn.c 就是个按键检测的函数
回复 支持 反对

使用道具 举报

6

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2017-12-12
在线时间
47 小时
发表于 2018-2-1 09:42:02 | 显示全部楼层
值得学习
回复 支持 反对

使用道具 举报

33

主题

215

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2035
金钱
2035
注册时间
2017-12-11
在线时间
454 小时
发表于 2018-2-1 09:53:14 | 显示全部楼层
楼主厉害,mark下
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2018-4-9
在线时间
9 小时
发表于 2018-4-9 09:43:39 | 显示全部楼层
你好,想知道 TIMER_Event_Handler();         这个里面都做了什么事情啊
回复 支持 反对

使用道具 举报

5

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2016-7-30
在线时间
82 小时
发表于 2018-4-9 11:31:29 | 显示全部楼层
mark

回复 支持 反对

使用道具 举报

4

主题

13

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2018-4-2
在线时间
6 小时
发表于 2018-4-10 05:17:06 | 显示全部楼层
楼主可以发一下IAP的工程吗?
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2018-4-13 19:54:31 | 显示全部楼层
tomydream 发表于 2018-4-9 09:43
你好,想知道 TIMER_Event_Handler();         这个里面都做了什么事情啊

里面只是一个一个简单的分时系统,没啥具体用处的
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2018-4-9
在线时间
9 小时
发表于 2018-4-16 13:33:36 | 显示全部楼层
本帖最后由 tomydream 于 2018-4-16 13:35 编辑
BJTT 发表于 2018-4-13 19:54
里面只是一个一个简单的分时系统,没啥具体用处的

那 loop是不是要在里面调用  ,还有就是 我单独发1030字节,就有回复信息,用你这个软件发,就一个也没有
回复 支持 反对

使用道具 举报

5

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2016-10-20
在线时间
42 小时
发表于 2018-4-16 16:39:06 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2018-4-18 21:49:43 | 显示全部楼层
tomydream 发表于 2018-4-16 13:33
那 loop是不是要在里面调用  ,还有就是 我单独发1030字节,就有回复信息,用你这个软件发,就一个也没有

升级的LOOP函数你就在while里面调用就行了,

在升级前,要按照我的通讯协议,跟设备连接,连接上后才能发送
软件有个debug mode,你打开,可以看到收到什么信息,
或者自己拿两个串口连起来,先用我的软件跟串口助手手动收发一下,这样有助于理解
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-4-25
在线时间
1 小时
发表于 2018-4-25 16:22:18 | 显示全部楼层
楼主,你的IAP和APP程序 RAM地址都一样吗? 一样的话难道定义的变量不会覆盖吗?
回复 支持 反对

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
 楼主| 发表于 2018-4-26 20:17:03 | 显示全部楼层
wangzhi15632 发表于 2018-4-25 16:22
楼主,你的IAP和APP程序 RAM地址都一样吗? 一样的话难道定义的变量不会覆盖吗?

肯定不一样呀,地址不一样,每次烧写自己的区域

变量是存储在SRAM理得,不是在FLASH里的
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 16:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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