STM32如何从串口接收数据,取出数据中的密码段再保存到flash中。
生活随笔
收集整理的這篇文章主要介紹了
STM32如何从串口接收数据,取出数据中的密码段再保存到flash中。
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
STM32如何從串口接收數(shù)據(jù),取出數(shù)據(jù)中的密碼段再保存到flash中
STM32如何從串口接收數(shù)據(jù),取出數(shù)據(jù)中的密碼段再保存到flash中u8 Usart2_buf[256]; unsigned int usart2_lent;void main(void) {char buf_password[19] = "000000";//6位密碼memset((char *) &buf_password, 0, sizeof(buf_password));strncpy(buf_password, Usart2_buf + 9, 6);//從外鍵獲取的信息保存到Usart2_buf中,其中從第10-15位保存的是密碼if(save_password()==1){soundBee(1);}else{soundBee(0);} }//單獨(dú)存儲密碼 int save_password() {char in_data[7]="";sprintf(in_data, "%s",buf_password);if(strlen(in_data)==18){write_flash(0x0800F800, (u16 *) in_data, 7);ACCLOG("write password success\n");return 1;}else{ACCLOG("write password fail...\n");return 0;} }//把密碼保存到flash int write_flash(u32 StartAddr,u16 *buf,u16 len) {volatile FLASH_Status FLASHStatus;u32 FlashAddr;len=(len+1)/2;FLASH_Unlock();FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);FlashAddr=StartAddr;FLASH_ErasePage(StartAddr);while(len--){FLASHStatus = FLASH_ProgramHalfWord(FlashAddr,*buf++);if (FLASHStatus != FLASH_COMPLETE){//printf("FLSH :Error %08X\n\r",FLASHStatus);return -1;}FlashAddr += 2;}FLASH_Lock();return 0; }//串口2終中斷(串口2接收到數(shù)據(jù)先給GetData1,再存入U(xiǎn)sart2_buf) void USART2_IRQHandler(void) { u8 GetData1;if(USART_GetITStatus(USART2, USART_IT_RXNE)!=RESET){USART_ClearITPendingBit(USART2,USART_IT_RXNE);GetData1=(u8)USART_ReceiveData(USART2)&0xff;if(usart2_read_en==0&&usart2_lent<256){Usart2_buf[usart2_lent]=GetData1;usart2_lent++;} }if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET){USART_ClearFlag(USART2,USART_FLAG_ORE); USART_ReceiveData(USART2); } }總結(jié)
以上是生活随笔為你收集整理的STM32如何从串口接收数据,取出数据中的密码段再保存到flash中。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现实工程中常用到的C语言函数总结(不断更
- 下一篇: C语言中%的用法