
单片机
WuAiJiDian
电子、电气、机械 DIY爱好者;
展开
-
漫谈C变量——对齐
谈起变量的访问(Access)就不得不谈到对齐(Alignment)的概念;谈论对齐,离开具体的计算机架构又会显得缺乏支撑,如同谈论空中楼阁一般。今天我们就以笔者熟悉的Cortex-M架构为蓝本,聊一聊变量访问的对齐问题。1. What ? 在展开后续讨论之前,我们先来记住一个重要的结论,它是后续所有内容的立论之本:编译器倾向于根据变量的大小(size)将其放置在与其大...转载 2020-01-01 16:41:51 · 2107 阅读 · 0 评论 -
什么是Data Consistency?
什么是Data Consistency?吃完饭后不刷牙Vehicle攻城狮3月25日导文熟悉“吃完饭后不刷牙”的小伙伴,我这里应该不需要做过多介绍了,还不熟悉的速速将“汽车ECU设计”的公众号和“汽车控制器”的知乎专栏关注起来。什么是Data Consistency?要说明这个Data Consistency(数据一致性),我们首先举一个例子。如图有两个T...转载 2019-05-17 13:29:33 · 1270 阅读 · 0 评论 -
Keil MDK下如何设置非零初始化变量
一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备。而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零。如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的。 在给出方法之前,先来了解一下代码和数据的存放规则、属性,以及复位后为何默认非初始化变量所在RAM都被转载 2017-12-16 16:52:46 · 742 阅读 · 0 评论 -
STM32启动过程解读与跟踪验证
近段时间由于在做ucos-iii的移植,所以就顺便了解下STM32的启动过程。经过查阅各种官方文献和对代码进行单步跟踪,详细地叙述了STM32加电启动的具体过程。对于关键性的语句都指明了出处。下面将学习成果分享给大家,由于笔者知识有限,不当之处敬请指出。 为了更好的说明问题,先来看STM32的内存映射(以STM32L1xx为例) 由于固转载 2017-12-16 16:29:21 · 537 阅读 · 0 评论 -
MDK软件不能模拟仿真STM32的问题解决方法
MDK软件不能模拟仿真STM32的问题解决方法刘勇军,杨选成中山市中等专业学校,中山 528458摘要: 学习和使用RealView MDK开发工具及STM32等芯片时,如果每个系列芯片都要购买、制作评估板或开发板的话,经济条件不允许,也不现实。当然也可以在没有硬件的条件下,通过MDK软件的模拟仿真来学习STM32系列芯片的编程,但MDK软件对模拟仿真的支持不是很全面,大部转载 2017-05-06 22:25:48 · 4913 阅读 · 0 评论 -
设备地址与IO内存映射
在嵌入式编程中,绝大部分功能都是通过驱动外设实现的,这些外设不仅可以是CPU外部的某种功能模块,也可以是CPU芯片内部集成的某些器件。这些芯片内部的外设基本都是通过总线的方式与CPU核心相连,而对它们的控制也通过对这些总线上的外设寄存器的配置来实现。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。但是外设寄存转载 2016-12-20 17:01:19 · 566 阅读 · 0 评论 -
单片机程序是如何执行的_单片机达人解密:指令数据写哪了?
单片机的运行需要执行程序,同时硬件也是必不可少的,二者缺一不可。大家都知道单片机的运行需要执行写好的程序,但是单片机的指令数据都被写在了哪里?在哪读取指令?单片机达人给你解答技术难题。 让我们从最开始的环节讲起。在单片机上电的瞬间,MCU的程序指针PC会被初始化为上电复位时的地址,从哪个地址处读取将要执行的指令,由此程序在MCU上开始执行(当然在调用程序的main之前,还有一系列其他的的初始化转载 2016-12-26 22:03:39 · 4260 阅读 · 3 评论 -
stm32 设置systick中断抢先式优先级
最近使用STM32时希望将systick的中断优先级降低,但是CMSIS里给出的例子都是类似[plain] view plain copy NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreempt转载 2016-10-05 14:45:43 · 1059 阅读 · 0 评论 -
stm32 堆和栈(stm32 Heap & Stack)【worldsing笔记】
关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的。 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘: 刚接手STM32时,你只编写一个int main(){while(1);}BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-转载 2016-10-02 16:48:04 · 3504 阅读 · 0 评论 -
进入OS前的两步之PendSV(任务切换)
先了解下如何使用PendSV异常。(为何要使用PendSV而不是其他的异常,请参考《cortex-M3权威指南》)1,如何设定PendSV优先级?NVIC_SYSPRI14 EQU 0xE000ED22NVIC_PENDSV_PRI EQU 0xFF LDR R0, =NVIC_SYSPRI14 LDR R1, =NVIC_PENDSV_PRI转载 2016-10-01 22:39:48 · 2868 阅读 · 0 评论 -
STM32从Flash地址0x08000000的启动重映射
在初写STM32程序时,遇到一个困惑,STM32的Flash在MDK里被设置为起始地址0x0800 0000,而CM3手册规定芯片复位时要从0x0000 0000地址开始取出中断向量 ,那STM32怎么样执行代码呢?地址重映射?或者在0x0000 0000里有对应有实际存储器?仔细阅读手册,发现这件事是因为STM32设计的Flash起始地址是在0x0800 0000位置开始的。全部代码都只转载 2016-09-03 15:00:21 · 2812 阅读 · 1 评论 -
关于ISP、IAP、DFU和bootloader
这是嵌入式开发中常用的几个专业术语,其诞生的背景和其具体作用大概如下在很久很久以前,那是8051单片机流行的时代,做单片机开发都需要一个专用工具,就是单片机的编程器,或者叫烧写器。说“烧”写一点不为过,当年的经典芯片AT89C51在编程时需要十几伏的高电压,加在一个特定的引脚上,才能进入编程。对于某款芯片的编程,都有一个特定的时序,这个时序通常在芯片的datasheet里进行描转载 2016-09-03 14:44:01 · 4171 阅读 · 0 评论 -
浅谈上、下拉电阻的作用
浅谈上、下拉电阻的作用上下拉电阻:1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于CMOS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。2、OC门电路必须加上拉电阻,以提高输出的高电平值。3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。4、在CMOS芯片上,为了防止静电造成损转载 2016-08-17 22:04:02 · 14055 阅读 · 0 评论