STM32
文章平均质量分 91
昵名不能为空
注:
注:
本人博客更多的目的是给自己得笔记!!!
注:
注:
展开
-
STM32的启动文件详解
启动文件简介启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:1、初始化堆栈指针SP=_initial_sp2、初始化PC 指针=Reset_Handler3、初始化中断向量表4、配置系统时钟5、调用C 库函数_main 初始化用户堆栈,从而最终调用main 函数去到C 的世界查找ARM 汇编指令在讲解启动代码的时候,会涉及到ARM 的汇编指令和Cortex 内核的指令,剩下的ARM的汇编指令我们可以在MDK->Help->Uvision Help 中搜索到转载 2021-08-05 09:37:47 · 1144 阅读 · 0 评论 -
STM32利用UID和OTP进行固件加密
资料准备:对应模块的参考手册(RM)一、OTP介绍OTP:one-time programmable,只允许一次编程,也就是只能从1写0,不能从0写1。这里可能有人要问,这不是flash的特性么?需要注意的是,flash是允许擦除的,是允许从0写1的。二OTP不允许擦除。而且,如果只有一位是0,整个双字(64位)都不能再写了,甚至也不能写0x0000 0000 0000 0000。这里的双字节根据不同的单片机有差距,由于我所使用的每次只能写双字节,因此,这里便是双字节。“The OTP area ca原创 2020-06-23 11:10:00 · 7615 阅读 · 4 评论 -
简单2步实现STM32中重定向printf函数
在STM32中使用printf,需要将fputc函数重定向fputc原型:int fputc(int ch, FILE* stream);重定义如下:(例子中是重定向为串口1)int fputc(int ch, FILE* stream){ Uart1_SendCh((uint8_t)ch); return ch;}在Keil软件中,要使用printf输出函数的话,注意需要先把use MicrolLIB选项选上OVER:实测OK...原创 2020-06-02 12:15:20 · 627 阅读 · 0 评论 -
STM中FLASH和RAM的关系
一、STM32中的内存分布情况要搞清楚stm32 FLASH、RAM的使用情况,就需要理清楚stm32的存储结构。在stm32中,flash,SRAM寄存器和输入输出端口被组织在同一个线性地址空间内C语言上分为栈、堆、bss、data、code段。重点分析一下STM32以及在MDK里面段的划分。MDK下Code,RO-data,RW-data,ZI-data这几个段:Code是存储程序代码的。RO-data是存储const常量和指令。RW-data是存储初始化值不为0的全局变量。ZI-da原创 2020-05-29 19:57:36 · 1268 阅读 · 0 评论 -
KEIL中HardFault_Handler的调试方法(stm32x0xx_it.c)
在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。 STM32出现硬件错误可能有以下原因: (1)数组越界操作; &nb.原创 2020-05-27 18:03:59 · 2245 阅读 · 0 评论 -
引脚配置
推挽在强驱动时,比如要推动一个8欧大扬声器,当然要先三极管驱动,这时就要强推./开漏是用在想取管脚电压,比如IIC通讯一定要开漏弱上拉:用在想让管脚平时为高电弱下拉:用在想让管脚平时为低电...原创 2019-12-11 16:20:51 · 783 阅读 · 0 评论 -
单片机中的代码是运行在FLASH中还是RAM中
...转载 2019-10-12 17:44:23 · 2355 阅读 · 0 评论 -
对STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解
由于STM32使用了4位,所以最多有5个优先级分组。STM32 HAL库中的中断优先级分组/* Preemption Priority Group -------------------------------------------------*/#define NVIC_PriorityGroup_0 ((u32)0x700) /* 0 bits for pre-em...原创 2019-09-12 10:42:05 · 1094 阅读 · 0 评论