STM32如何从串口接收数据,取出数据中的密码段再保存到flash中

发布者:李国永最新更新时间:2022-05-25 来源: eefocus关键字:STM32  串口  接收数据  flash 手机看文章 扫描二维码
随时随地手机看文章

STM32如何从串口接收数据,取出数据中的密码段再保存到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);

    }

}

 

//单独存储密码

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 successn");

    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 %08Xnr",FLASHStatus);

            return -1;

          }

          FlashAddr += 2;

        }

        

FLASH_Lock();

return 0;

}

 

//串口2终中断(串口2接收到数据先给GetData1,再存入Usart2_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); 

  }   

}


关键字:STM32  串口  接收数据  flash 引用地址:STM32如何从串口接收数据,取出数据中的密码段再保存到flash中

上一篇:STM32串口实时接收数据与所提前定义的比较,并作出相应的操作
下一篇:延时函数delay_ms,delay_us会出现进入延时函数出不来的情况

推荐阅读最新更新时间:2024-11-11 11:05

STM32十年超24亿颗+完整生态圈,ST已成为物联网真正受益者
   “物联网”这个概念在中国流行起来已经至少有十几年了,整个产业界也讨论、追逐了很多年。至今,这个概念仍没有出现爆发性的机会和巨头厂商,因此很多人开始怀疑这就是一个“伪”概念。
 不过,回顾过去几百年的工业历史告诉我们,要真正验证一个历史趋势是否真正存在,可能需要几十上百年的时间。而往往大多数人当真正看到机会那一刻,其实已经为时已晚。最后真正的赢家一般都是,在机会来临之前就已经开始了深度布局。 就在4月25日,知名的国际半导体厂商意法半导体(下称ST)在深圳举办的“STM32中国峰会”上,笔者第一真正感受到了真正的“物联网”其实已经来临,而且ST 率先布局并成为真正的受益者。 “STM32” 十年超24亿颗,已经融入生活的方
[手机便携]
STM32的IO口的设置
1、当把IO口当作按键使用时:若按下按键为低电平则IO口应设置为上拉输入;若按下按键为高电平则IO口应设置为下拉输入。 2、KEIL4.7版本有个语法检查功能,今天发现当文件夹为大写的英文时,会误报找不到该文件里的头文件,但是实际是可以打开和正常使用的,把文件夹的名称改为小写就可以了。 3、当STM32的响应IO口重映射时,一定要初始化复用时钟,IO口输出一定要设置为复用推挽输出,不能设置为推挽输出。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外设和AFIO复用功能模块时钟 GPIO_PinRemap
[单片机]
总结写的stm32的KEY控制LED
stm32的学习就是弄懂是怎么进行软件配置,先明白硬件连接,再结合起来; #include stm32f4xx.h #include led.h #define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4) // 这里读取IO的状态,将stm32的IO口作为输入使用 #define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3) #define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2) #define LED0 PFout(9) //DSO LED
[单片机]
Windows下stm32串口下载程序(DOS版本)
每次更新程序都需要用到stlink调试工具,感觉非常不方便,笔记本搬来搬去,帮客户更新程序也不方便使用别人的下载工具。 那么只能自己写一个下载工具了。 刚开始我是想研究一下stm32 BootLoader的官方协议,然后通过协议来写这个程序。 后面找到官方质料AN3155_USART protocol used in the STM32 bootloader_en.pdf(自行百度)。 全是英文,看了一天挺累的,进展也慢。 后面又了解到原来st公司自己写了一个BootLoader的库。根据网上找到的很多质料模仿大神们写了一个。 因为时间原因先完成一个DOS版本的,后面将继续完成MFC版本,方便使用。源码都会
[单片机]
Windows下<font color='red'>stm32</font><font color='red'>串口</font>下载程序(DOS版本)
STM32-通用定时器基本定时功能
1. STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8个定时器。 定时器 计数器分辨率 计数器类型 预分频系数 产生DMA请求 捕获/比较通道 互补输出 TIM1 TIM8 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 有 TIM2 TIM3 TIM4 TIM5 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 没有 TIM6
[单片机]
HOLTEK推出BS82C16A-3 Flash触控单片机
Holtek推出新一代内建LED / LCD Driver的Flash触控MCU BS82C16A-3,BS82C16A-3支持16个触控按键,除了保有上一代的优点之外还比上一代触控MCU更省电,触控侦测的更新率更高,并且抗干扰的能力更好,而内建的LED / LCD Driver更俱备4段电流输出控制,可直推LED / LCD不须外挂限流电阻或三极管,大幅简化产品应用零件及降低成本,非常适合于俱备LED / LCD之小家电触控面板应用,BS82C16A-3同时也支持I2C / UART界面,可当主控IC亦可搭配主控MCU专门负责触控按键的侦测或LED / LCD的显示。 BS82C16A-3的特点在于工规 (-40℃ ~
[单片机]
STM32 I2C总线 自我总结学习
现在打算彻底搞清楚STM32的I2C总线通信----首先是对AT24C02的读写----手上有PCF8574的IO扩展芯片,也是I2C协议的,希望实现多个控制! STM32的I2C有自带的硬件驱动,也可以使用GPIO模拟-----先总结一下硬件驱动下的问题。 ----------------------------------硬件下-----以AT24C02与PCF8574为例--------------- ------第一部分是简单宏定义------- #define I2C_Speed 300000 //传输速率--挂载原件多时要求降低速率,自己在调试过程中出现过这样问题 #define I2C1_OWN
[单片机]
<font color='red'>STM32</font> I2C总线 自我总结学习
STM32F系列单片机内部FLASH编程
STM32F系列单片机内部含有较大容量的FLASH存储器,但没有EEPROM存储器,有时候对于参数的保存不得不另外加一片EEPROM芯片。这对于现如今大部分MCU都是FLASH+EEPROM的配置而言,显的相当的不厚道,尤其是从AVR转过来的开发者们,极为不方便。考虑到STM32F系列自身FLASH容量较大,且有自编程功能,所以很多时候可选择用FLASH模拟EEPROM,存储参数。STM32F系列的FLASH容量一般都足够大,笔者的所有设计中,最高也只用到其相应FLASH的60%左右,还有很多未用到的空间,用于存储参数还是相当方便的。另外,操作FLASH还能方便的实现IAP功能,这对于某些应用,是非常实用的。 STM32F系列
[单片机]
STM32F系列单片机内部<font color='red'>FLASH</font>编程
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved