#define buff_size 16; char rx_buff[],rx_buff_count=0; void USART_SendStr(USART_TypeDef* USARTx,char *str) //传送字符串 { while((*str)!='\0') { USART_SendData(USARTx,*str++); while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET); } } void func(char *S,char LEN) //判断字符串输入长度 { if((LEN!=6)&(LEN!=7)&(LEN!=8)) {USART_SendStr(USART1,"\r\n Erro input!!!\r\n");} } int number() //从UART1输入的字符串数据转成整型 { int number; rx_buff[rx_buff_count]= USART_ReceiveData(USART1); //把逐个字符放进字符串数组 rx_buff_count++; number=atoi(rx_buff); //把字符串数组里的数字转成整型 return number; } void input_ASK() { char j; func(rx_buff,rx_buff_count); rx_buff_count=0; for (j=0;j"); } void USART1_IRQHandler(void) //中断函数 { if(USART_ReceiveData(USART1)==0x0d) {input_ASK();} else { USART_SendData(USART1,USART_ReceiveData(USART1)); rx_buff[rx_buff_count]= USART_ReceiveData(USART1); rx_buff_count++; } USART_ClearFlag(USART1, USART_FLAG_RXNE); } /** * @brief Main program. * @param None * @retval None */ int main(void) { int i; RCC_Configuration(); GPIO_INIT(); USART_int(9600); USART_SendStr(USART1,"\r\n"); USART_SendStr(USART1,"SyStem booting......\r\n"); USART_SendStr(USART1,"\n>"); i=number(); while(1){ Dis_number(i);//数码管显示函数 } }
每次输入data=00~99时,数码管只显示上面两幅图任意一个。但是字符串转整型的函数在先前的作业是没有问题,不过数码管不能保持,现在做到数码管保持不灭了,可是显示的问题想过很多方法,一直不能解决,现在求助下大神,希望有点新思路。代码就把功能实现的代码放上,初始化的就算了。