27,373
社区成员
发帖
与我相关
我的任务
分享
int main(void)
{
u16 len = 0, data_len =0;
int ret = 0, i =0, n = 0;
u32 offset = 0;
USB_Config();
USB_Cable_Config(ENABLE);
//Init_Image_tx();
//led_on (LED_ALL);
while(1)
{
len = 0;
memset(UWBRxBuff, 0x0,sizeof(UWBRxBuff));
len = USB_RxRead(UWBRxBuff, sizeof(UWBRxBuff));
if(UWBRxBuff[0] == 0x19 && UWBRxBuff[1] == 0xF1)
{
jumpToApp(0x080005000);
return 0;
}
else
{
n = sprintf(SendBuff,"waite for jump command!!");
USB_TxWrite(SendBuff,n);
}
Sleep(1000);
}
}
void jumpToApp(uint32_t appxaddr)
{
int n = 0;
n = sprintf((char*)&SendBuff[0], "%s\r\n", "Reay ...");
USB_TxWrite(SendBuff, n);
n = sprintf((char*)&SendBuff[0], "addr:%08x\r\n", appxaddr);
USB_TxWrite(SendBuff, n);
if (((*(volatile uint32_t*)appxaddr) & 0x2FFE0000 ) == 0x20000000)
{
n = sprintf((char*)&SendBuff[0], "%s", "Go!\r\n");
USB_TxWrite(SendBuff, n);
/* Jump to user application */
JumpAddress = *(volatile uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
n = sprintf((char*)&SendBuff[0], "JumpAddress:%08x\r\n", JumpAddress);
USB_TxWrite(SendBuff, n);
/* Initialize user application's Stack Pointer */
//USB_Cable_Config(DISABLE);
//INTX_DISABLE();
__disable_irq();
SCB->VTOR = FLASH_BASE | ApplicationAddress;
__set_MSP(*(volatile uint32_t*) appxaddr);
Jump_To_Application();
}
}
int main(void)
{
volatile u16 adcx;
INTX_DISABLE();
SCB->VTOR = FLASH_BASE | 0x00005000UL;
USB_Config();
USB_Cable_Config(ENABLE);
uart_init(UART_BAUDRATE);
GPIO_Configuration(); //PB6/PB7 LED0-1
SPI_Configuration(); /*SPI1, CS->GPIOA PIN4/5/6/7*/
peripherals_init();
INTX_ENABLE();
//Flash_Configuration();
led_on(LED_ALL);
printf("0123456789\r\n");
printf("abcdefghjk\r\n");
printf("xxxxxxxxxx\r\n"); //boot跳转后,从串口输出在这里停止了。后面Display_UWBInfo(1);也有printf 输出,但是没有打印出来
//RTC_Alarm_Configuration();//Init RTC ALARM
//MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR, (u32)DMA_USART_Buff, 3000);
//USART_DMACmd(USART1, USART_DMAReq_Tx,ENABLE); //DMA
Display_UWBInfo(1);
waittingForCleConfig(0);
return 0;
}
楼主最后怎么解决的,我也遇到了,插上USB跳转就出问题,不插屁事没有,但是客户要一直使用的啊
#ifdef VECT_TAB_SRAM
SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif
SystemInit 在 启动文件中有调用,除非你将它屏蔽了; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SystemInit
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
#define VECT_TAB_OFFSET 0x5000
int main(void)
{
volatile u16 adcx;
INTX_DISABLE();
//SCB->VTOR = FLASH_BASE | 0x00005000UL;
USB_Config();
USB_Cable_Config(ENABLE);
uart_init(UART_BAUDRATE);
GPIO_Configuration(); //PB6/PB7 LED0-1
SPI_Configuration(); /*SPI1, CS->GPIOA PIN4/5/6/7*/
peripherals_init();
SCB->VTOR = FLASH_BASE | 0x00005000UL; //移到这个位置
INTX_ENABLE();
//Flash_Configuration();
led_on(LED_ALL);
printf("0123456789\r\n");
printf("abcdefghjk\r\n");
printf("xxxxxxxxxx\r\n"); //boot跳转后,从串口输出在这里停止了。后面Display_UWBInfo(1);也有printf 输出,但是没有打印出来
//RTC_Alarm_Configuration();//Init RTC ALARM
//MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR, (u32)DMA_USART_Buff, 3000);
//USART_DMACmd(USART1, USART_DMAReq_Tx,ENABLE); //DMA
Display_UWBInfo(1);
waittingForCleConfig(0);
return 0;
}
有人能帮忙解释一下什么原因么??