STM32程序移植之_内部flash开机次数管理

发布者:RadiantRiver最新更新时间:2018-10-05 来源: eefocus关键字:STM32  程序移植  内部flash  开机次数管理 手机看文章 扫描二维码
随时随地手机看文章

1. 测试环境:STM32C8T6

2. 测试接口:

3. 串口使用串口一,波特率9600

单片机引脚------------CH340引脚

VCC--------------------VCC

GND-------------------GND

PA9--------------------RXD

 

PA10-------------------TXD

1.       功能:

1.       使用STM32内部falsh进行开机次数记录

2.       通过串口输入密码进行权限的设置

3.       设置唯一硬件标识

2.       移植基础

1.   008_STM32之_keil编译内存大小解析

2.   009_STM32程序移植之_内部falsh

3. 010_STM32程序移植之_lib库建立

3.       前面三个是解析,有了基础之后进行移植

4.       四个文件

011_STM32程序移植之_内部flash开机次数管理

5.       第一个是普通串口打印文件

6.       第二和第四个是开机管理的

7.       第三个是密码初始化,就是先刷这个程序进去初始化变量

8.       开始移植

9.       确定串口程序能够使用,能够串口打印和接收数据

10.   开始移植

11.   调用函数检测

011_STM32程序移植之_内部flash开机次数管理

12.   程序需要修改的地方就这里

011_STM32程序移植之_内部flash开机次数管理

13.   程序编译成功之后先不下载这个程序

14.   我们下载密码初始化这里这个程序,进行变量的初始化

011_STM32程序移植之_内部flash开机次数管理

15.   下载之后会打印一些都系出来,这个里面有解析

011_STM32程序移植之_内部flash开机次数管理

16.   密码初始化完成之后,我们再下载刚才移植的程序

 011_STM32程序移植之_内部flash开机次数管理


17.   会有数据打印出来,打印的数据是因为我们前面进行了密码初始化

 

011_STM32程序移植之_内部flash开机次数管理

18.   看现象,我们密码初始化玩之后能够就行开机20次

011_STM32程序移植之_内部flash开机次数管理

19.   当开机超过20次之后,程序就卡死在这里了,不能往下运行了

011_STM32程序移植之_内部flash开机次数管理

20.   我们初始密码是{123456},当前面四个正确后面两个不正确时候获得临时开机权限

例如:{123420}      //获得临时开机权限20次

             {123450}     //获得临时开机权限20次

011_STM32程序移植之_内部flash开机次数管理


21.   在串口中断那里调用串口密码输入

011_STM32程序移植之_内部flash开机次数管理

22.   就算重新下载进去也不能进行程序的运行

23.   继续20点,输入密码{123410} 获得临时权限10次,

011_STM32程序移植之_内部flash开机次数管理

24.   复位看效果,当临时权限超过10次之后,再次失效

011_STM32程序移植之_内部flash开机次数管理

25.   输入正确密码之后可以获得永久权限

011_STM32程序移植之_内部flash开机次数管理

011_STM32程序移植之_内部flash开机次数管理

26.   临时权限只能输入一次,再次输入就没有用了


关键字:STM32  程序移植  内部flash  开机次数管理 引用地址:STM32程序移植之_内部flash开机次数管理

上一篇:STM32程序移植之_内部flash开机次数管理lib库建立
下一篇:STM32之_keil编译内存大小解析

推荐阅读最新更新时间:2024-03-16 16:14

stm32 TIM2 重映射
stm32的TIM2的端口使用组合有下面四种: 1.当不重映射时,默认TIM2四个的IO口是PA0、PA1、PA2、PA3 2.要使用PA15、PB3、PA2、PA3的端口组合,要调用下面的语句进行部分重映射: RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射必须要开AFIO时钟 GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE); 3.要使用PA0、PA1、PB10、PB11的端口组合,要调用下面的语句进行部分重映射: RCC_APB2PeriphClockCmd(RCC_APB2Perip
[单片机]
<font color='red'>stm32</font> TIM2 重映射
STM32常见的串行通信接口
通信接口背景知识 设备之间通信的方式 一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。并行与串行通信的区别如下表所示。 串行通信的分类 1、按照数据传送方向,分为: 单工:数据传输只支持数据在一个方向上传输; 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。 2、按照通信方式,分为: 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。 异步通信:不带时钟同步信号。比
[单片机]
<font color='red'>STM32</font>常见的串行通信接口
STM32 定时器计数器 更新事件
向上计数模式 在向上计数模式中,计数器从0计数到自动加载值(TIMx_ARR计数器的内容),然后重新从0开始计数并且产生一个计数器溢出事件。 如果使用了重复计数器功能,在向上计数达到设置的重复计数次数(TIMx_RCR)时,产生更新事件(UEV);否则每次计数器溢出时才产生更新事件。 这样很容易误解 应该是否则每次计数器溢出时都产生更新事件,即不使用重复重复计数功能每次溢出都产生更新事件。 产生更新事件方式 1.设置了TIMx_CR1寄存器中的URS位(选择更新请求),在TIMx_EGR寄存器中(通过软件方式或者使用从模式控制器)设置UG位将产生一个更新事件UEV,但硬件不设置UIF标志(即不产生中断或DMA请求)
[单片机]
工程师STM32单片机学习基础手记(4):用PWM实现荧火虫灯(二)
用PWM生成正弦波   有了PWM,自然就可以用PWM的方法生成正弦波了。下面生成500Hz正弦波的方法参考自张明峰的《PIC单片机入门与实践》   每个正弦波分成四个像限,每个像限16点,共64点,每点出现2个PWM周期,故PWM的周期为:2ms/128=156.25us,频率为64KHz。   TIM3 Frequency = TIM3 counter clock/(ARR + 1)   倒过来:   ARR=TIM3 Counter Clock/TIM3 Frequenc - 1 =562.5-1 =561   如果取ARR的值是561的话,那么实际的频率是64.056KHz,即最终生成为的正弦波频率
[模拟电子]
STM32串口IAP实验中的地址问题
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)和if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)分析 首先要清楚:0x8000000是Flash的起始地址,0x20000000是SRAM的起始地址。jump2app()是一个虚拟函数(函数指针) (*(vu32*)(0X20001000+4))== (*(__IO uint32_t*)(0X20001000+4)) ==(*(volatile unsigned int*)(0X20001000+4)) (*(vu32*)(0X20001000+4)) 通过内存寻
[单片机]
<font color='red'>STM32</font>串口IAP实验中的地址问题
点亮LED(库函数实现)
本次测试采用的芯片是STM32F103CB 我的开发板如下: 此开发板有8个led,分别为D11,D12,D13,D14,D15,D16,D17,D18。查询核心板的电路图后知道其对应芯片的控制引脚为P0.0,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7,P0.8。 现在开始测试点亮D11。主要源代码如下: 1 //main.c 2 #include pbdata.h 3 #include led.h 4 5 int main(void) 6 { 7 led_init(); 8 led_setBit(); 9 } 1 //pbdata.h 2 #ifndef _pbdata
[单片机]
点亮LED(库函数实现)
Stm32 debug停留在"BKPT 0xAB"或者"SWI 0xAB"的解决办法
一、、背景:   曾经在工作中接触过STM32一段时间,但没有深入的去学习,只是用前辈搭建好的模型来实现一些功能罢了,俗话说的好,大树底下好乘凉,开发确实轻松了,可是不深究点,又觉着心里不踏实,然而也一直没花时间去深究。刚好,最近需要重新使用STM32,完全自己开发,没想到今天一上来就让我碰上个不小的问题,废话不多说,进入正题。 二、正文:   在使用串口的时候,代码可以正常编译,没有报任何错误,烧录进MCU内,就是看不到程序正常运行的现象,而把串口部分注释掉就没问题。进入调试模式,发现代码停在 BKPT  0xAB 这里,并不是死循环,按下全速运行键“F5”,代码会立马在该段被终止,不会继续往下跑,这里说明了main函数都没
[单片机]
<font color='red'>Stm32</font> debug停留在
由浅入深尽享STM32标准库开发的乐趣
摘要:从STM32新建工程、编译下载程序出发,让新手由浅入深,尽享STM32标准库开发的乐趣。 自从CubeMX等图像配置软件的出现,同学们往往点几下鼠标就解决了单片机的配置问题。对于追求开发速度的业务场景下,使用快速配置软件是合理的,高效的,但对于学生的学习场景下,更为重要的是知其然并知其所以然。 以下是学习(包括但不限于)嵌入式的三个重要内容, 1、学会如何参考官方的手册和官方的代码来独立写自己的程序。 2、积累常用代码段,知道哪里的问题需要哪些代码处理。 3、跟随大佬步伐,一步一个脚印。 首先:我们都知道编程时一般查的是《参考手册》,而进行芯片选型或需要芯片数据时,查阅的是《数据手册》。此外市面上所有关于STM32的
[单片机]
由浅入深尽享<font color='red'>STM32</font>标准库开发的乐趣
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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