中级会员
 
- 积分
- 249
- 金钱
- 249
- 注册时间
- 2018-10-17
- 在线时间
- 40 小时
|
1金钱
我寫一段程式碼,利用"串口助理"輸入一段文字在USART1_IRQHandler,
裡面,我再把文字寫入name前,先把name清除,利用 memset(name, 0, sizeof(name));
因為每次寫入字串到陣列之前要先清除之前的陣列,不然列印出來會有之前字串的一部分.
我把name設定成為extern 全局變數陣列.
但是搞不懂為什麼我把memset(name, 0, sizeof(name))寫在USART1_IRQHandler
讀取的name字串永遠一片空白,好像都被memset(name, 0, sizeof(name))清的乾乾淨淨的
但是我把memset(name, 0, sizeof(name))寫在main函式,卻可以在name裡面讀取到我寫入
的字串.
uint8_t number=0;
uint8_t x=0;
char buff [100] = "";
void USART1_IRQHandler(void)
{
char * data = My_Usart1_ReadLine();
My_Usart1_Printf(data);
}
void My_Usart1_Printf(char *string)
{
while(*string){
/* ????? USART3 */
USART_SendData(USART1, (unsigned short int) *string++);
/* ???????? */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
}
char * My_Usart1_ReadLine(){
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
char c = USART_ReceiveData(USART1);
if(c != '\r' && c != '\n')
{
sprintf (buff, "%s%c", buff, c);
}
else
{
char buff2 [100] = "";
uint8_t number=strlen(buff);
memset(name, 0, sizeof(name));
memcpy(name,buff, strlen(buff));//把輸入的字串放進全區域陣列name
memcpy(buff2,buff, strlen(buff)); // ? buff ??? buff2
memset(buff, 0, strlen(buff)); // ?? buff ???????
USART_ClearFlag(USART1,USART_IT_RXNE);
return buff2;
}
}
return "";
}
|
|