完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位大神:
小弟最近在玩学习原子的IAP功能,一般都是用串口线来做的,但是我把串口线换成2个蓝牙模块对接后,也就是蓝牙模块1和电脑串口连接,蓝牙模块2和板子串口连接,蓝牙成功连接了;但是发送的.bin文件板子并没有接收到,也就是没有接收到到app程序,有木有大牛做过,请不吝赐教! |
|
相关推荐
15个回答
|
|
先试试串口实验,能否通过蓝牙来测试。
|
|
|
|
串口升级搞定了,蓝牙的通信也搞定(蓝牙的透传模式资料里面写的相当于串口传输),但是用蓝牙代替串口就不行了,debug显示没有接收到数据
|
|
|
|
https://item.taobao.com/item.htm ... amp;id=536369739835
|
|
|
|
需要推广请发送到开发工具板块
|
|
|
|
应该是串口的问题,可是我比较了一下,和串口例程一样的,还是接收不到数据,求大神指教啊
|
|
|
|
#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("rnÄú·¢ËíμÄÏûÏ¢Îa:rnrn"); // for(t=0;t // USART_SendData(USART1, USART_RX_BUF[t]);//Ïò′®¿ú1·¢Ëíêy¾Y // while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//μè′y·¢Ëí½áêø // } // res = USART_RX_BUF[0]; // if(res==0x31) // LED1=0; // if(res==0x30) // LED1=1; // // printf("rnrn");//2åèë»»DD // USART_RX_STA=0; // } // if(USART_RX_CNT) { if(oldcount==USART_RX_CNT)//DÂÖüÆúÄú,ûóDêÕμ½èÎoÎêy¾Y,èÏÎa±¾′Îêy¾Y½óêÕíê3é. { applenth=USART_RX_CNT; oldcount=0; USART_RX_CNT=0; printf("óû§3ìDò½óêÕíê3é!rn"); printf("′úÂë3¤¶è:%dBytesrn",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);//Çå3yÏÔê¾ } } key=KEY_Scan(0); if(key==KEY_UP) { if(applenth) { printf("¿a꼸üDÂ1ì¼t...rn"); LCD_ShowString(60,210,200,16,16,"Copying APP2FLASH..."); if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//ÅD¶ÏêÇ·ñÎa0X08XXXXXX. { iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//¸üDÂFLASH′úÂë delay_ms(100); LCD_ShowString(60,210,200,16,16,"Copy APP Successed!!"); printf("1ì¼t¸üDÂíê3é!rn"); }else { LCD_ShowString(60,210,200,16,16,"Illegal FLASH APP! "); printf("·ÇFLASHó|óÃ3ìDò!rn"); } }else { printf("ûóD¿éòÔ¸üDÂμÄ1ì¼t!rn"); LCD_ShowString(60,210,200,16,16,"No APP!"); } clearflag=7;//±êÖ¾¸üDÂáËÏÔê¾,2¢ÇòéèÖÃ7*300msoóÇå3yÏÔê¾ } if(key==KEY_DOWN) { if(applenth) { printf("1ì¼tÇå3yíê3é!rn"); LCD_ShowString(60,210,200,16,16,"APP Erase Successed!"); applenth=0; }else { printf("ûóD¿éòÔÇå3yμÄ1ì¼t!rn"); LCD_ShowString(60,210,200,16,16,"No APP!"); } clearflag=7;//±êÖ¾¸üDÂáËÏÔê¾,2¢ÇòéèÖÃ7*300msoóÇå3yÏÔê¾ } if(key==KEY_LEFT) { printf("¿aê¼Ö′DDFLASHóû§′úÂë!!rn"); if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)//ÅD¶ÏêÇ·ñÎa0X08XXXXXX. { iap_load_app(FLASH_APP1_ADDR);//Ö′DDFLASH APP′úÂë }else { printf("·ÇFLASHó|óÃ3ìDò,ÎT·¨Ö′DD!rn"); LCD_ShowString(60,210,200,16,16,"Illegal FLASH APP!"); } clearflag=7;//±êÖ¾¸üDÂáËÏÔê¾,2¢ÇòéèÖÃ7*300msoóÇå3yÏÔê¾ } // if(key==KEY_RIGHT) // { // printf("¿aê¼Ö′DDSRAMóû§′úÂë!!rn"); // if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x20000000)//ÅD¶ÏêÇ·ñÎa0X20XXXXXX. // { // iap_load_app(0X20001000);//SRAMμØÖ· // }else // { // printf("·ÇSRAMó|óÃ3ìDò,ÎT·¨Ö′DD!rn"); // LCD_ShowString(60,210,200,16,16,"Illegal SRAM APP!"); // } // clearflag=7;//±êÖ¾¸üDÂáËÏÔê¾,2¢ÇòéèÖÃ7*300msoóÇå3yÏÔê¾ // } } } 这个是IAPmain.c |
|
|
|
#include "sys.h"
#include "usart.h" ////////////////////////////////////////////////////////////////////////////////// //èç1ûê1óÃucos,Ôò°üà¨ÏÂÃæμÄí·Îļt¼′¿é. #if SYSTEM_SUPPORT_UCOS #include "includes.h" //ucos ê1óà #endif ////////////////////////////////////////////////////////////////////////////////// //±¾3ìDòÖ»1©Ñ§Ï°ê1óã¬Î′¾-×÷ÕßDí¿é£¬2»μÃóÃóúÆäËüèÎoÎóÃí¾ //ALIENTEK STM32¿a·¢°å //′®¿ú13õê¼»ˉ //ÕyμãÔ-×ó@ALIENTEK //¼¼êõÂÛì3:www.openedv.com //DT¸ÄèÕÆú:2012/8/18 //°æ±¾£oV1.5 //°æè¨ËùóD£¬μá°æ±Ø¾¿¡£ //Copyright(C) 1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾ 2009-2019 //All rights reserved //******************************************************************************** //V1.3DT¸ÄËμÃ÷ //Ö§3Öêêó|2»í¬ÆμÂêÏÂμÄ′®¿ú2¨ìØÂêéèÖÃ. //¼óèëá˶ÔprintfμÄÖ§3Ö //Ôö¼óáË′®¿ú½óêÕÃüáî1|Äü. //DTÕyáËprintfμúò»¸ö×Ö·û¶aê§μÄbug //V1.4DT¸ÄËμÃ÷ //1,DT¸Ä′®¿ú3õê¼»ˉIOμÄbug //2,DT¸ÄáËUSART_RX_STA,ê1μÃ′®¿ú×î′ó½óêÕ×Ö½úêyÎa2μÄ14′η½ //3,Ôö¼óáËUSART_REC_LEN,óÃóú¶¨òå′®¿ú×î′óÔêDí½óêÕμÄ×Ö½úêy(2»′óóú2μÄ14′η½) //4,DT¸ÄáËEN_USART1_RXμÄê1Äü·½ê½ //V1.5DT¸ÄËμÃ÷ //1,Ôö¼óá˶ÔUCOSIIμÄÖ§3Ö ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// //¼óèëòÔÏÂ′úÂë,Ö§3Öprintfoˉêy,¶ø2»DèòaÑ¡Ôñuse MicroLIB #if 1 #pragma import(__use_no_semihosting) //±ê×¼¿aDèòaμÄÖ§3Öoˉêy struct __FILE { int handle; }; FILE __stdout; //¶¨òå_sys_exit()òÔ±üÃaê1óðëÖ÷»úÄ£ê½ _sys_exit(int x) { x = x; } //Öض¨òåfputcoˉêy int fputc(int ch, FILE *f) { while((USART1->SR&0X40)==0);//Ñ-»··¢Ëí,Ö±μ½·¢Ëííê±Ï USART1->DR = (u8) ch; return ch; } #endif /*ê1óÃmicroLibμÄ·½·¨*/ /* 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 //èç1ûê1Äüá˽óêÕ //′®¿ú1ÖD¶Ï·tÎñ3ìDò //×¢òa,¶áè¡USARTx->SRÄü±üÃaÄaÃûÆäÃîμÄ′íÎó extern u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000)));//½óêÕ»o3å,×î′óUSART_REC_LEN¸ö×Ö½ú,Æeê¼μØÖ·Îa0X20001000. //½óêÕ×′ì¬ //bit15£¬ ½óêÕíê3é±êÖ¾ //bit14£¬ ½óêÕμ½0x0d //bit13~0£¬ ½óêÕμ½μÄóDD§×Ö½úêyÄ¿ u16 USART_RX_STA=0; //½óêÕ×′쬱ê¼Ç u16 USART_RX_CNT=0; //½óêÕμÄ×Ö½úêy void USART1_IRQHandler(void) { extern u8 res; #ifdef OS_CRITICAL_METHOD //èç1ûOS_CRITICAL_METHOD¶¨òåáË,ËμÃ÷ê1óÃucosIIáË. OSIntEnter(); #endif if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//½óêÕμ½êy¾Y { res=USART_ReceiveData(USART1); if(USART_RX_CNT USART_RX_BUF[USART_RX_CNT]=res; USART_RX_CNT++; } } #ifdef OS_CRITICAL_METHOD //èç1ûOS_CRITICAL_METHOD¶¨òåáË,ËμÃ÷ê1óÃucosIIáË. OSIntExit(); #endif } #endif void uart_init(u32 bound){ //GPIO¶Ë¿úéèÖà GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //ê1ÄüUSART1£¬GPIOAê±ÖóòÔ¼°¸′óÃ1|Äüê±Öó //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; //¸′óÃíÆíìêä3ö GPIO_Init(GPIOA, &GPIO_InitStructure); //USART1_RX PA.10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿Õêäèë GPIO_Init(GPIOA, &GPIO_InitStructure); //Usart1 NVIC ÅäÖà //USART 3õê¼»ˉéèÖà USART_InitStructure.USART_BaudRate = bound;//ò»°ãéèÖÃÎa9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö3¤Îa8λêy¾Y¸ñê½ USART_InitStructure.USART_StopBits = USART_StopBits_1;//ò»¸öí£Ö1λ USART_InitStructure.USART_Parity = USART_Parity_No;//ÎTÆæżD£Ñéλ USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎTó2¼têy¾Yá÷¿ØÖÆ USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //êÕ·¢Ä£ê½ USART_Init(USART1, &USART_InitStructure); //3õê¼»ˉ′®¿ú #if EN_USART1_RX //èç1ûê1Äüá˽óêÕ NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//ÇàÕ¼óÅÏ輶3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //×óóÅÏ輶3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQí¨μàê1Äü NVIC_Init(&NVIC_InitStructure); //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉVIC¼Ä′æÆ÷ USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//¿aÆôÖD¶Ï #endif USART_Cmd(USART1, ENABLE); //ê1Äü′®¿ú } 这是IAP usart.c |
|
|
|
#include "sys.h"
#include "delay.h" #include "usart.h" #include "stmflash.h" #include "iap.h" ////////////////////////////////////////////////////////////////////////////////// //±¾3ìDòÖ»1©Ñ§Ï°ê1óã¬Î′¾-×÷ÕßDí¿é£¬2»μÃóÃóúÆäËüèÎoÎóÃí¾ //ALIENTEKÕ½½¢STM32¿a·¢°å //IAP ′úÂë //ÕyμãÔ-×ó@ALIENTEK //¼¼êõÂÛì3:www.openedv.com //DT¸ÄèÕÆú:2012/9/24 //°æ±¾£oV1.0 //°æè¨ËùóD£¬μá°æ±Ø¾¿¡£ //Copyright(C) 1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾ 2009-2019 //All rights reserved ////////////////////////////////////////////////////////////////////////////////// iapfun jump2app; u16 iapbuf[1024]; //appxaddr:ó|óÃ3ìDòμÄÆeê¼μØÖ· //appbuf:ó|óÃ3ìDòCODE. //appsize:ó|óÃ3ìDò′óD¡(×Ö½ú). void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize) { u16 t; u16 i=0; u16 temp; u32 fwaddr=appxaddr;//μ±Ç°D′èëμÄμØÖ· u8 *dfu=appbuf; for(t=0;t temp=(u16)dfu[1]<<8; temp+=(u16)dfu[0]; dfu+=2;//Æ«òÆ2¸ö×Ö½ú iapbuf[i++]=temp; if(i==1024) { i=0; STMFLASH_Write(fwaddr,iapbuf,1024); fwaddr+=2048;//Æ«òÆ2048 16=2*8.ËùòÔòa3ËòÔ2. } } if(i)STMFLASH_Write(fwaddr,iapbuf,i);//½«×îoóμÄò»D©ÄúèY×Ö½úD′½øè¥. } //ìø×aμ½ó|óÃ3ìDò¶Î //appxaddr:óû§′úÂëÆeê¼μØÖ·. void iap_load_app(u32 appxaddr) { if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //¼ì2éÕ»¶¥μØÖ·êÇ·ñoÏ·¨. { jump2app=(iapfun)*(vu32*)(appxaddr+4); //óû§′úÂëÇøμú¶t¸ö×ÖÎa3ìDò¿aê¼μØÖ·(¸′λμØÖ·) MSR_MSP(*(vu32*)appxaddr); //3õê¼»ˉAPP¶ÑÕ»Ö¸Õë(óû§′úÂëÇøμÄμúò»¸ö×ÖóÃóú′æ·ÅÕ»¶¥μØÖ·) jump2app(); //ìø×aμ½APP. } } 这是iap.c |
|
|
|
我真不知道该怎么修改了,不要沉水呀
|
|
|
|
i'm sorry
|
|
|
|
是可以的,调试蓝牙就是用的串口实验调试的,可以发送和接收数据
|
|
|
|
楼主,你好。我最近也在调试蓝牙IAP。在蓝牙通讯的时候,用的是两个USB转TTL接蓝牙模块,和你差不多。在电脑上,用串口助手同时对这两个蓝牙进行调试。总是出现接收的乱码问题,能不能向你请教一下,你的两个蓝牙模块具体是如何配置的?主从角色是如何选择的?万分感谢,希望可以加你QQ详聊,我的QQ:1446536890.
|
|
|
|
我是电脑端接的蓝牙,下位机蓝牙接在单片机串口,其实只要配置成透传模式,就相当于串口线了,注意一下波特率的问题,一定要匹配
|
|
|
|
肯定是可以的
|
|
|
|
肯定是可以的
|
|
|
|
只有小组成员才能发言,加入小组>>
332浏览 1评论
449浏览 1评论
578浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
462浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
432浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 21:53 , Processed in 1.118348 second(s), Total 125, Slave 109 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号