|
楼主 |
发表于 2021-3-12 21:07:00
|
显示全部楼层
/*
*********************************************************************************************************
* 函 数 名: u2_printf
* 功能说明: 蓝牙发送数据
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void ble_printf(char* fmt,...)
{
u16 i,j;
uint8_t TXBUF[128];
va_list ap;
va_start(ap,fmt);
vsprintf((char*)TXBUF,fmt,ap);
va_end(ap);
i = strlen((const char*)TXBUF); //此次发送数据的长度
for (j = 0; j < i; j++) //循环发送数据
{
while (USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET); //循环发送,直到发送完毕
USART_SendData(USART2,TXBUF[j]);
}
}
最终找到问题处在了自己写的这个函数这里 ,调用串口二发送数据,然后串口二的USART_FLAG_TC标志位 一直都没有清除
事实上我在bootloader中调用
/*
*********************************************************************************************************
* 函 数 名: JumpToApp
* 功能说明: 跳转到app
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void JumpToApp(void)
{
uint32_t i=0;
HAL_UART_DeInit(&huart1);
HAL_UART_DeInit(&huart2);
HAL_UART_MspDeInit(&huart2);
HAL_UART_MspDeInit(&huart1);
__HAL_UART_CLEAR_FLAG(&huart2,UART_FLAG_TC);
HAL_DeInit();
__set_PRIMASK(1); /* 禁止全局中断 */
/* 关闭滴答定时器,复位到默认值 */
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
// SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk; /* Disable SysTick Timer */
/* 设置所有时钟到默认状态,使用HSI时钟 */
HAL_RCC_DeInit();
/* 关闭所有中断,清除所有中断挂起标志 */
for (i = 0; i < 8; i++)
{
NVIC->ICER[i]=0xFFFFFFFF;
NVIC->ICPR[i]=0xFFFFFFFF;
}
__set_PRIMASK(0); /* 使能全局中断 */
/* 跳转到APP程序,首地址是MSP,地址+4是复位中断服务程序地址 */
JumpToApplication = (void (*)(void)) (*((uint32_t *) (APPLICATION_ADDRESS + 4)));
/* 设置主堆栈指针 */
__set_MSP(*(uint32_t *)APPLICATION_ADDRESS);
/* 跳转到系统BootLoader */
JumpToApplication();
/* 跳转成功的话,不会执行到这里,用户可以在这里添加代码 */
while (1)
{
}
}
的这个函数。反正后来改成了这个 就能正常跑了
void ble_printf(char* fmt,...)
{
u16 i,j;
uint8_t TXBUF[128];
va_list ap;
va_start(ap,fmt);
vsprintf((char*)TXBUF,fmt,ap);
va_end(ap);
i = strlen((const char*)TXBUF); //此次发送数据的长度
comSendBuf(COM2,TXBUF,i);
} |
|