STM32F103C8T6 CubeMX Lwip設定問題
如何设计硬件R-2R梯形网络电路,得以输出16bit的分辨率?
UFQFPN48
为什么注册不了ST账户,发送邮件后输入密码后就没反映?
STM32 HID和CDC组合设备无法枚举成功
使用STM32F103控制两步进电机同时进行不同的运动(软件指令驱动),与控制一个电机的不同之处在于哪里?
STC Auto Programmer如何下载程序到STM32F103R?
STM32F103高级定时器中,开启单脉冲模式(置位TIMx_CR1:RCR)是不是会立刻清除计数器使能位?
谁有TCS34725颜色传感器的可用的程序,谢谢。
怎么获取SMBus示例代码
你可以把代码贴出来,这种发送时阻塞式发送的,应该不会进MemManage_Handler中断的
strcpy((char )g_ucCatStrBuff,"{'i':'"); for(i=0;i<24;i++) { uiD = 1<<i; if((g_uiLedDrv&uiD)==0) { strcat((char )g_ucCatStrBuff,"2");
} else { strcat((char )g_ucCatStrBuff,"1");
} } ProFun_Reback_Fun("1"); strcpy((char )g_ucCatSendTBuff,cSendHead); strcat((char )g_ucCatSendTBuff,cSendTopic1);
strcat((char )g_ucCatSendTBuff,(char)g_ucCatStrBuff);
strcat((char )g_ucCatSendTBuff,cSendEnd);
// strcpy((char )g_ucCatSendTBuff,cSendHead);//-----------test Cat_Send_Str((char )g_ucCatSendTBuff);
把Cat_Send_Str((char *)g_ucCatSendTBuff);这句去掉就不会出现异常中断,把g_ucCatSendTBuff 长度变小 也不会
void Cat_Send_Str(char *pStr) { unsigned short int usLen; unsigned short int i;
usLen = strlen(pStr);
for(i=0;i<usLen;i++) { g_ucCatSendBuff[i] = ((unsigned char )pStr+i); } g_ucCatSendBuff[usLen] = 0x0D; g_ucCatSendBuff[usLen+1] = 0x0a;
Cat_Send_Data(g_ucCatSendBuff,usLen+2); }
void Cat_Send_Data(unsigned char *p, unsigned short int len) { unsigned int usLen;
usLen = len<<4; HAL_UART_Transmit(&huart1, p,len,usLen);
}
如果数据是局部变量,部分将堆栈适当调大点;
再就是注意数据访问时别越界了,注意数组边界和指针的有效性;
strcpy((char )g_ucCatSendTBuff,cSendHead); strcat((char )g_ucCatSendTBuff,cSendTopic1);
strcat((char )g_ucCatSendTBuff,(char)g_ucCatStrBuff);
strcat((char *)g_ucCatSendTBuff,cSendEnd);
// strcpy((char )g_ucCatSendTBuff,cSendHead);//-----------test Cat_Send_Str((char )g_ucCatSendTBuff);
把Cat_Send_Str这条语句去掉就不会进入异常中断, 而且把g_ucCatSendTBuff的长度变短也不会进入异常中断
/****
**/ void Cat_Send_Str(char *pStr) { unsigned short int usLen; unsigned short int i;
usLen = strlen(pStr);
for(i=0;i<usLen;i++) { g_ucCatSendBuff[i] = ((unsigned char )pStr+i); } g_ucCatSendBuff[usLen] = 0x0D; g_ucCatSendBuff[usLen+1] = 0x0a;
Cat_Send_Data(g_ucCatSendBuff,usLen+2); }
//**** // shanghai gankun // www.sensorground.com //designed by hank //All rights reserved //ÐÞ¸ÄÈÕÆÚ:2014/5/2 //°æ±¾£ºV1.0 //**** void Cat_Send_Data(unsigned char *p, unsigned short int len) { unsigned int usLen;
usLen = len<<4; HAL_UART_Transmit(&huart1, p,len,usLen);
}
多谢!最开始我也怀疑是数据越界,但是我用 R13 看是从那里跳到 异常中断的,尽然是定时器中断,
我把栈堆放大试一下