OpenEdv-开源电子网

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

STM32F1开发板的IAP功能通过蓝牙实现问题

[复制链接]

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
发表于 2016-9-11 19:19:49 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 longshengma 于 2016-9-11 19:28 编辑

各位大神:
      小弟最近在玩学习原子的IAP功能,一般都是用串口线来做的,但是我把串口线换成2个蓝牙模块对接后,也就是蓝牙模块1和电脑串口连接,蓝牙模块2和板子串口连接,蓝牙成功连接了;但是发送的.bin文件板子并没有接收到,也就是没有接收到到app程序,有木有大牛做过,请不吝赐教!
    小弟的联系方式:791524579(qq)

连接线

连接线

发送.bin

发送.bin

bootload查找不到app

bootload查找不到app

最佳答案

查看完整内容[请看2#楼]

先试试串口实验,能否通过蓝牙来测试。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-9-11 19:19:50 | 显示全部楼层
先试试串口实验,能否通过蓝牙来测试。
回复

使用道具 举报

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
 楼主| 发表于 2016-9-12 08:59:35 | 显示全部楼层
串口升级搞定了,蓝牙的通信也搞定(蓝牙的透传模式资料里面写的相当于串口传输),但是用蓝牙代替串口就不行了,debug显示没有接收到数据
回复

使用道具 举报

21

主题

387

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1043
金钱
1043
注册时间
2016-9-8
在线时间
213 小时
发表于 2016-9-12 08:59:39 | 显示全部楼层
shop60994719.taobao.com
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-9-12 12:22:36 | 显示全部楼层
密耳 发表于 2016-9-12 08:59
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-1255750299.36.t3JZ4M&id=536369739835

需要推广请发送到开发工具板块
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
 楼主| 发表于 2016-9-12 12:47:34 | 显示全部楼层
应该是串口的问题,可是我比较了一下,和串口例程一样的,还是接收不到数据,求大神指教啊
1.PNG
回复

使用道具 举报

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
 楼主| 发表于 2016-9-12 12:48:25 | 显示全部楼层
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "stmflash.h"
#include "iap.h"
u8 res;
u8 USART_RX_BUF[USART_REC_LEN];
//ALIENTEKÕ½½¢STM32¿a·¢°åêμÑé48
//IAPêμÑé Bootloader V1.0 ′úÂë
//¼¼êõÖ§3Ö£owww.openedv.com
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾
int main(void)
{               
        u8 len;
        u8 t;
        u8 key;
        u16 oldcount=0;        //àÏμÄ′®¿ú½óêÕêy¾YÖμ
        u16 applenth=0;        //½óêÕμ½μÄapp′úÂë3¤¶è
        u8 clearflag=0;

        uart_init(256000);        //′®¿ú3õê¼»ˉÎa256000
        delay_init();                            //Ñóê±3õê¼»ˉ
        LCD_Init();       
        LED_Init();                                  //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú

        KEY_Init();                                //°′¼ü3õê¼»ˉ

        POINT_COLOR=RED;//éèÖÃ×ÖìåÎaoìé«
        LCD_ShowString(60,50,200,16,16,"Warship STM32");       
        LCD_ShowString(60,70,200,16,16,"IAP TEST");       
        LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(60,110,200,16,16,"2012/9/24");  
        LCD_ShowString(60,130,200,16,16,"WK_UP:Copy APP2FLASH");
        LCD_ShowString(60,150,200,16,16,"KEY1:Erase SRAM APP");
        LCD_ShowString(60,170,200,16,16,"KEY0:Run SRAM APP");
        LCD_ShowString(60,190,200,16,16,"KEY2:Run FLASH APP");
        POINT_COLOR=BLUE;
        //ÏÔê¾ìáê¾DÅÏ¢
        POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶
        while(1)
        {
//                 if(USART_RX_STA&0x8000)
//                 {                                          
//                         len=USART_RX_STA&0x3fff;//μÃμ½′Ë′νóêÕμ½μÄêy¾Y3¤¶è
//                         printf("\r\nÄú·¢ËíμÄÏûÏ¢Îa:\r\n\r\n");
//                         for(t=0;t<len;t++)
//                         {
//                                 USART_SendData(USART1, USART_RX_BUF[t]);//&#207;ò′&#174;&#191;ú1·¢&#203;íêy&#190;Y
//                                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//μè′y·¢&#203;í&#189;áê&#248;
//                         }
//                         res = USART_RX_BUF[0];
//                         if(res==0x31)
//                                 LED1=0;
//                         if(res==0x30)
//                                 LED1=1;
//                
//                         printf("\r\n\r\n");//2&#229;è&#235;&#187;&#187;DD
//                         USART_RX_STA=0;
//                 }
//                
               
               
               
               
               
               
               
                 if(USART_RX_CNT)
                {
                        if(oldcount==USART_RX_CNT)//D&#194;&#214;ü&#198;ú&#196;ú,&#195;&#187;óDê&#213;μ&#189;è&#206;o&#206;êy&#190;Y,è&#207;&#206;a±&#190;′&#206;êy&#190;Y&#189;óê&#213;íê3é.
                        {
                                applenth=USART_RX_CNT;
                                oldcount=0;
                                USART_RX_CNT=0;
                                printf("ó&#195;&#187;§3ìDò&#189;óê&#213;íê3é!\r\n");
                                printf("′ú&#194;&#235;3¤&#182;è:%dBytes\r\n",applenth);
                        }else oldcount=USART_RX_CNT;                       
                }
                t++;
                delay_ms(10);
                if(t==30)
                {
                        LED0=!LED0;
                        t=0;
                        if(clearflag)
                        {
                                clearflag--;
                                if(clearflag==0)LCD_Fill(60,210,240,210+16,WHITE);//&#199;&#229;3y&#207;&#212;ê&#190;
                        }
                }                   
                key=KEY_Scan(0);
                if(key==KEY_UP)
                {
                        if(applenth)
                        {
                                printf("&#191;aê&#188;&#184;üD&#194;1ì&#188;t...\r\n");       
                                LCD_ShowString(60,210,200,16,16,"Copying APP2FLASH...");
                                if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//&#197;D&#182;&#207;ê&#199;·&#241;&#206;a0X08XXXXXX.
                                {         
                                        iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//&#184;üD&#194;FLASH′ú&#194;&#235;   
                                        delay_ms(100);
                                        LCD_ShowString(60,210,200,16,16,"Copy APP Successed!!");
                                        printf("1ì&#188;t&#184;üD&#194;íê3é!\r\n");       
                                }else
                                {
                                        LCD_ShowString(60,210,200,16,16,"Illegal FLASH APP!  ");          
                                        printf("·&#199;FLASHó|ó&#195;3ìDò!\r\n");
                                }
                        }else
                        {
                                printf("&#195;&#187;óD&#191;éò&#212;&#184;üD&#194;μ&#196;1ì&#188;t!\r\n");
                                LCD_ShowString(60,210,200,16,16,"No APP!");
                        }
                        clearflag=7;//±ê&#214;&#190;&#184;üD&#194;á&#203;&#207;&#212;ê&#190;,2¢&#199;òéè&#214;&#195;7*300msoó&#199;&#229;3y&#207;&#212;ê&#190;                                                                         
                }
                if(key==KEY_DOWN)
                {
                        if(applenth)
                        {                                                                                                                                         
                                printf("1ì&#188;t&#199;&#229;3yíê3é!\r\n");   
                                LCD_ShowString(60,210,200,16,16,"APP Erase Successed!");
                                applenth=0;
                        }else
                        {
                                printf("&#195;&#187;óD&#191;éò&#212;&#199;&#229;3yμ&#196;1ì&#188;t!\r\n");
                                LCD_ShowString(60,210,200,16,16,"No APP!");
                        }
                        clearflag=7;//±ê&#214;&#190;&#184;üD&#194;á&#203;&#207;&#212;ê&#190;,2¢&#199;òéè&#214;&#195;7*300msoó&#199;&#229;3y&#207;&#212;ê&#190;                                                                         
                }
                if(key==KEY_LEFT)
                {
                        printf("&#191;aê&#188;&#214;′DDFLASHó&#195;&#187;§′ú&#194;&#235;!!\r\n");
                        if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)//&#197;D&#182;&#207;ê&#199;·&#241;&#206;a0X08XXXXXX.
                        {         
                                iap_load_app(FLASH_APP1_ADDR);//&#214;′DDFLASH APP′ú&#194;&#235;
                        }else
                        {
                                printf("·&#199;FLASHó|ó&#195;3ìDò,&#206;T·¨&#214;′DD!\r\n");
                                LCD_ShowString(60,210,200,16,16,"Illegal FLASH APP!");          
                        }                                                                         
                        clearflag=7;//±ê&#214;&#190;&#184;üD&#194;á&#203;&#207;&#212;ê&#190;,2¢&#199;òéè&#214;&#195;7*300msoó&#199;&#229;3y&#207;&#212;ê&#190;          
                }
//                 if(key==KEY_RIGHT)
//                 {
//                         printf("&#191;aê&#188;&#214;′DDSRAMó&#195;&#187;§′ú&#194;&#235;!!\r\n");
//                         if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x20000000)//&#197;D&#182;&#207;ê&#199;·&#241;&#206;a0X20XXXXXX.
//                         {         
//                                 iap_load_app(0X20001000);//SRAMμ&#216;&#214;·
//                         }else
//                         {
//                                 printf("·&#199;SRAMó|ó&#195;3ìDò,&#206;T·¨&#214;′DD!\r\n");
//                                 LCD_ShowString(60,210,200,16,16,"Illegal SRAM APP!");          
//                         }                                                                         
//                         clearflag=7;//±ê&#214;&#190;&#184;üD&#194;á&#203;&#207;&#212;ê&#190;,2¢&#199;òéè&#214;&#195;7*300msoó&#199;&#229;3y&#207;&#212;ê&#190;         
//                 }                                  
                 
        }             
}

这个是IAPmain.c
回复

使用道具 举报

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
 楼主| 发表于 2016-9-12 12:48:56 | 显示全部楼层
#include "sys.h"
#include "usart.h"          
//////////////////////////////////////////////////////////////////////////////////          
//è&#231;1&#251;ê1ó&#195;ucos,&#212;ò°üà¨&#207;&#194;&#195;&#230;μ&#196;í·&#206;&#196;&#188;t&#188;′&#191;é.
#if SYSTEM_SUPPORT_UCOS
#include "includes.h"                                        //ucos ê1ó&#195;          
#endif
//////////////////////////////////////////////////////////////////////////////////         
//±&#190;3ìDò&#214;&#187;1&#169;&#209;§&#207;°ê1ó&#195;£&#172;&#206;′&#190;-×÷&#213;&#223;Dí&#191;é£&#172;2&#187;μ&#195;ó&#195;óú&#198;&#228;&#203;üè&#206;o&#206;ó&#195;í&#190;
//ALIENTEK STM32&#191;a·¢°&#229;
//′&#174;&#191;ú13&#245;ê&#188;&#187;ˉ                  
//&#213;yμ&#227;&#212;-×ó@ALIENTEK
//&#188;&#188;ê&#245;&#194;&#219;ì3:www.openedv.com
//DT&#184;&#196;è&#213;&#198;ú:2012/8/18
//°&#230;±&#190;£oV1.5
//°&#230;è¨&#203;ùóD£&#172;μá°&#230;±&#216;&#190;&#191;&#161;£
//Copyright(C) 1&#227;&#214;YêDD&#199;òíμ&#231;×ó&#191;&#198;&#188;&#188;óD&#207;T1&#171;&#203;&#190; 2009-2019
//All rights reserved
//********************************************************************************
//V1.3DT&#184;&#196;&#203;μ&#195;÷
//&#214;§3&#214;êêó|2&#187;í&#172;&#198;μ&#194;ê&#207;&#194;μ&#196;′&#174;&#191;ú2¨ì&#216;&#194;êéè&#214;&#195;.
//&#188;óè&#235;á&#203;&#182;&#212;printfμ&#196;&#214;§3&#214;
//&#212;&#246;&#188;óá&#203;′&#174;&#191;ú&#189;óê&#213;&#195;üá&#238;1|&#196;ü.
//DT&#213;yá&#203;printfμúò&#187;&#184;&#246;×&#214;·&#251;&#182;aê§μ&#196;bug
//V1.4DT&#184;&#196;&#203;μ&#195;÷
//1,DT&#184;&#196;′&#174;&#191;ú3&#245;ê&#188;&#187;ˉIOμ&#196;bug
//2,DT&#184;&#196;á&#203;USART_RX_STA,ê1μ&#195;′&#174;&#191;ú×&#238;′ó&#189;óê&#213;×&#214;&#189;úêy&#206;a2μ&#196;14′&#206;·&#189;
//3,&#212;&#246;&#188;óá&#203;USART_REC_LEN,ó&#195;óú&#182;¨ò&#229;′&#174;&#191;ú×&#238;′ó&#212;êDí&#189;óê&#213;μ&#196;×&#214;&#189;úêy(2&#187;′óóú2μ&#196;14′&#206;·&#189;)
//4,DT&#184;&#196;á&#203;EN_USART1_RXμ&#196;ê1&#196;ü·&#189;ê&#189;
//V1.5DT&#184;&#196;&#203;μ&#195;÷
//1,&#212;&#246;&#188;óá&#203;&#182;&#212;UCOSIIμ&#196;&#214;§3&#214;
//////////////////////////////////////////////////////////////////////////////////           


//////////////////////////////////////////////////////////////////
//&#188;óè&#235;ò&#212;&#207;&#194;′ú&#194;&#235;,&#214;§3&#214;printfoˉêy,&#182;&#248;2&#187;Dèòa&#209;&#161;&#212;&#241;use MicroLIB          
#if 1
#pragma import(__use_no_semihosting)            
//±ê×&#188;&#191;aDèòaμ&#196;&#214;§3&#214;oˉêy                 
struct __FILE
{
        int handle;

};

FILE __stdout;      
//&#182;¨ò&#229;_sys_exit()ò&#212;±ü&#195;aê1ó&#195;°&#235;&#214;÷&#187;ú&#196;£ê&#189;   
_sys_exit(int x)
{
        x = x;
}
//&#214;&#216;&#182;¨ò&#229;fputcoˉêy
int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);//&#209;-&#187;··¢&#203;í,&#214;±μ&#189;·¢&#203;ííê±&#207;   
    USART1->DR = (u8) ch;      
        return ch;
}
#endif

/*ê1ó&#195;microLibμ&#196;·&#189;·¨*/
/*
int fputc(int ch, FILE *f)
{
        USART_SendData(USART1, (uint8_t) ch);

        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {}       
   
    return ch;
}
int GetKey (void)  {

    while (!(USART1->SR & USART_FLAG_RXNE));

    return ((int)(USART1->DR & 0x1FF));
}
*/

#if EN_USART1_RX   //è&#231;1&#251;ê1&#196;üá&#203;&#189;óê&#213;
//′&#174;&#191;ú1&#214;D&#182;&#207;·t&#206;&#241;3ìDò
//×¢òa,&#182;áè&#161;USARTx->SR&#196;ü±ü&#195;a&#196;a&#195;&#251;&#198;&#228;&#195;&#238;μ&#196;′í&#206;ó          
extern u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000)));//&#189;óê&#213;&#187;o3&#229;,×&#238;′óUSART_REC_LEN&#184;&#246;×&#214;&#189;ú,&#198;eê&#188;μ&#216;&#214;·&#206;a0X20001000.   
//&#189;óê&#213;×′ì&#172;
//bit15£&#172;        &#189;óê&#213;íê3é±ê&#214;&#190;
//bit14£&#172;        &#189;óê&#213;μ&#189;0x0d
//bit13~0£&#172;        &#189;óê&#213;μ&#189;μ&#196;óDD§×&#214;&#189;úêy&#196;&#191;
u16 USART_RX_STA=0;               //&#189;óê&#213;×′ì&#172;±ê&#188;&#199;          
u16 USART_RX_CNT=0;                        //&#189;óê&#213;μ&#196;×&#214;&#189;úêy          
void USART1_IRQHandler(void)
{
extern        u8 res;       
#ifdef OS_CRITICAL_METHOD         //è&#231;1&#251;OS_CRITICAL_METHOD&#182;¨ò&#229;á&#203;,&#203;μ&#195;÷ê1ó&#195;ucosIIá&#203;.
        OSIntEnter();   
#endif
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//&#189;óê&#213;μ&#189;êy&#190;Y
        {         
                res=USART_ReceiveData(USART1);
                if(USART_RX_CNT<USART_REC_LEN)
                {
                        USART_RX_BUF[USART_RX_CNT]=res;
                        USART_RX_CNT++;                                                                                                      
                }
        }
#ifdef OS_CRITICAL_METHOD         //è&#231;1&#251;OS_CRITICAL_METHOD&#182;¨ò&#229;á&#203;,&#203;μ&#195;÷ê1ó&#195;ucosIIá&#203;.
        OSIntExit();                                                                                           
#endif
}
#endif       
void uart_init(u32 bound){
    //GPIO&#182;&#203;&#191;úéè&#214;&#195;
   GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
         
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);        //ê1&#196;üUSART1£&#172;GPIOAê±&#214;óò&#212;&#188;°&#184;′ó&#195;1|&#196;üê±&#214;ó
     //USART1_TX   PA.9
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //&#184;′ó&#195;í&#198;íìê&#228;3&#246;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   
    //USART1_RX          PA.10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//&#184;&#161;&#191;&#213;ê&#228;è&#235;
    GPIO_Init(GPIOA, &GPIO_InitStructure);  

   //Usart1 NVIC &#197;&#228;&#214;&#195;


   //USART 3&#245;ê&#188;&#187;ˉéè&#214;&#195;

        USART_InitStructure.USART_BaudRate = bound;//ò&#187;°&#227;éè&#214;&#195;&#206;a9600;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×&#214;3¤&#206;a8&#206;&#187;êy&#190;Y&#184;&#241;ê&#189;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;//ò&#187;&#184;&#246;í£&#214;1&#206;&#187;
        USART_InitStructure.USART_Parity = USART_Parity_No;//&#206;T&#198;&#230;&#197;&#188;D£&#209;é&#206;&#187;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//&#206;Tó2&#188;têy&#190;Yá÷&#191;&#216;&#214;&#198;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //ê&#213;·¢&#196;£ê&#189;

    USART_Init(USART1, &USART_InitStructure); //3&#245;ê&#188;&#187;ˉ′&#174;&#191;ú
#if EN_USART1_RX                  //è&#231;1&#251;ê1&#196;üá&#203;&#189;óê&#213;

    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//&#199;à&#213;&#188;ó&#197;&#207;è&#188;&#182;3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //×óó&#197;&#207;è&#188;&#182;3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQí¨μàê1&#196;ü
        NVIC_Init(&NVIC_InitStructure);        //&#184;ù&#190;Y&#214;&#184;&#182;¨μ&#196;2&#206;êy3&#245;ê&#188;&#187;ˉVIC&#188;&#196;′&#230;&#198;÷
  
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//&#191;a&#198;&#244;&#214;D&#182;&#207;
#endif
    USART_Cmd(USART1, ENABLE);                    //ê1&#196;ü′&#174;&#191;ú

}

这是IAP usart.c
回复

使用道具 举报

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
 楼主| 发表于 2016-9-12 12:49:21 | 显示全部楼层
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "stmflash.h"
#include "iap.h"
//////////////////////////////////////////////////////////////////////////////////         
//±&#190;3ìDò&#214;&#187;1&#169;&#209;§&#207;°ê1ó&#195;£&#172;&#206;′&#190;-×÷&#213;&#223;Dí&#191;é£&#172;2&#187;μ&#195;ó&#195;óú&#198;&#228;&#203;üè&#206;o&#206;ó&#195;í&#190;
//ALIENTEK&#213;&#189;&#189;¢STM32&#191;a·¢°&#229;
//IAP ′ú&#194;&#235;          
//&#213;yμ&#227;&#212;-×ó@ALIENTEK
//&#188;&#188;ê&#245;&#194;&#219;ì3:www.openedv.com
//DT&#184;&#196;è&#213;&#198;ú:2012/9/24
//°&#230;±&#190;£oV1.0
//°&#230;è¨&#203;ùóD£&#172;μá°&#230;±&#216;&#190;&#191;&#161;£
//Copyright(C) 1&#227;&#214;YêDD&#199;òíμ&#231;×ó&#191;&#198;&#188;&#188;óD&#207;T1&#171;&#203;&#190; 2009-2019
//All rights reserved                                                                          
//////////////////////////////////////////////////////////////////////////////////       

iapfun jump2app;
u16 iapbuf[1024];   
//appxaddr:ó|ó&#195;3ìDòμ&#196;&#198;eê&#188;μ&#216;&#214;·
//appbuf:ó|ó&#195;3ìDòCODE.
//appsize:ó|ó&#195;3ìDò′óD&#161;(×&#214;&#189;ú).
void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize)
{
        u16 t;
        u16 i=0;
        u16 temp;
        u32 fwaddr=appxaddr;//μ±&#199;°D′è&#235;μ&#196;μ&#216;&#214;·
        u8 *dfu=appbuf;
        for(t=0;t<appsize;t+=2)
        {                                                    
                temp=(u16)dfu[1]<<8;
                temp+=(u16)dfu[0];          
                dfu+=2;//&#198;&#171;ò&#198;2&#184;&#246;×&#214;&#189;ú
                iapbuf[i++]=temp;            
                if(i==1024)
                {
                        i=0;
                        STMFLASH_Write(fwaddr,iapbuf,1024);       
                        fwaddr+=2048;//&#198;&#171;ò&#198;2048  16=2*8.&#203;ùò&#212;òa3&#203;ò&#212;2.
                }
        }
        if(i)STMFLASH_Write(fwaddr,iapbuf,i);//&#189;&#171;×&#238;oóμ&#196;ò&#187;D&#169;&#196;úèY×&#214;&#189;úD′&#189;&#248;è¥.  
}

//ì&#248;×aμ&#189;ó|ó&#195;3ìDò&#182;&#206;
//appxaddr:ó&#195;&#187;§′ú&#194;&#235;&#198;eê&#188;μ&#216;&#214;·.
void iap_load_app(u32 appxaddr)
{
        if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)        //&#188;ì2é&#213;&#187;&#182;¥μ&#216;&#214;·ê&#199;·&#241;o&#207;·¨.
        {
                jump2app=(iapfun)*(vu32*)(appxaddr+4);                //ó&#195;&#187;§′ú&#194;&#235;&#199;&#248;μú&#182;t&#184;&#246;×&#214;&#206;a3ìDò&#191;aê&#188;μ&#216;&#214;·(&#184;′&#206;&#187;μ&#216;&#214;·)               
                MSR_MSP(*(vu32*)appxaddr);                                        //3&#245;ê&#188;&#187;ˉAPP&#182;&#209;&#213;&#187;&#214;&#184;&#213;&#235;(ó&#195;&#187;§′ú&#194;&#235;&#199;&#248;μ&#196;μúò&#187;&#184;&#246;×&#214;ó&#195;óú′&#230;·&#197;&#213;&#187;&#182;¥μ&#216;&#214;·)
                jump2app();                                                                        //ì&#248;×aμ&#189;APP.
        }
}                 

这是iap.c
回复

使用道具 举报

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
 楼主| 发表于 2016-9-12 12:50:01 | 显示全部楼层
我真不知道该怎么修改了,不要沉水呀
回复

使用道具 举报

21

主题

387

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1043
金钱
1043
注册时间
2016-9-8
在线时间
213 小时
发表于 2016-9-12 14:41:57 | 显示全部楼层
八度空间 发表于 2016-9-12 12:22
需要推广请发送到开发工具板块

i'm sorry
shop60994719.taobao.com
回复

使用道具 举报

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
 楼主| 发表于 2016-9-14 09:04:44 | 显示全部楼层
正点原子 发表于 2016-9-13 23:50
先试试串口实验,能否通过蓝牙来测试。

是可以的,调试蓝牙就是用的串口实验调试的,可以发送和接收数据
回复

使用道具 举报

3

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2016-9-21
在线时间
23 小时
发表于 2016-10-6 10:54:35 | 显示全部楼层
楼主,你好。我最近也在调试蓝牙IAP。在蓝牙通讯的时候,用的是两个USB转TTL接蓝牙模块,和你差不多。在电脑上,用串口助手同时对这两个蓝牙进行调试。总是出现接收的乱码问题,能不能向你请教一下,你的两个蓝牙模块具体是如何配置的?主从角色是如何选择的?万分感谢,希望可以加你QQ详聊,我的QQ:1446536890.
回复

使用道具 举报

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
 楼主| 发表于 2016-10-13 18:25:06 | 显示全部楼层
qianlong 发表于 2016-10-6 10:54
楼主,你好。我最近也在调试蓝牙IAP。在蓝牙通讯的时候,用的是两个USB转TTL接蓝牙模块,和你差不多。在电 ...

我是电脑端接的蓝牙,下位机蓝牙接在单片机串口,其实只要配置成透传模式,就相当于串口线了,注意一下波特率的问题,一定要匹配
回复

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2017-1-4 17:35:23 | 显示全部楼层
肯定是可以的
回复

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2017-1-4 17:35:28 | 显示全部楼层
肯定是可以的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 16:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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