问题标签 [microprocessors]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arm - ARM微处理器的内存空间
在 ARM 微处理器中,唯一可用的内存空间是 37 个左右的通用寄存器和状态寄存器,还是微处理器芯片内有单独的可访问内存空间?
例如,在 Atmel AVR 微控制器中,据我了解,内存在同一芯片内部映射,包括数据内存、程序内存(包含程序内存)和 EEPROM 内存。这同样适用于 ARM 微处理器,还是带有 ARM 微处理器的微控制器需要单独的外部存储器?
microprocessors - 微编程 - 递减跳转不为零
我正试图了解微编程和操作码。我在看 DJNZ 或 Decrement Jump Not Zero。我一直试图让这个工作没有运气。我删除了不相关部分的代码如下。
我的 OPCodes 列表是这样的
DESP: sp:=sp-y
JNZE:如果 ac /= 那么 pc:=x
到目前为止,我相信我可以让它从零跳到 79,然后它可能会减量并回写。我不确定。
我用这个来测试
有了这个输出
如果有人能说我是否在正确的行上,然后帮助我实现非零的跳转,并给我一个关于减少和写回正确方法的指针,那就太棒了。
不确定这是否是正确的网站,我也不确定标签,所以如果有人可以修复或指出我正确的方向,那就太好了。
microcontroller - 微控制器中的堆栈内存分配
如何确定微控制器中特定程序所需的堆栈内存?例如,假设我有一个内部可能有许多子例程或线程的程序。在我开始执行程序之前,我想修复该程序的堆栈大小。如何标记堆栈的终点。
processor - 是否有必要让“控制单元下一个状态寄存器”触发下降沿?
每个模块可以被认为具有以下功能: [1] 它可以存储数据。[2] 可以对数据进行运算。(算术运算)
模块的一些属性(仅列出,我现在关心的。) [1] 模块中的所有寄存器/内存元素都是上升沿触发的。
现在这种架构可以用来创建计算机处理器的模型。
真正的交易:是否有必要让“控制单元下一个状态寄存器”被触发下降?(下面我解释为什么我这么认为)
该控制信号只是输入和电流状态的组合结果。所以这意味着随着当前状态的变化,控制信号会发生变化,这意味着状态应该在下降沿发生变化[1]。所以状态变化只是发生在时钟下降沿的“控制单元状态寄存器”的变化。这就是为什么我认为“是否有必要让“控制单元下一个状态寄存器”被触发下降沿”......我在想/考虑正确吗?
如果是,那么在实际处理器中也应该发生相同的情况(控制单元状态寄存器的下降沿触发)。
我正在学习东西,所以请原谅+纠正我的错误
c - 是否可以将整个数组保存在 cpu 寄存器中
在下面的代码中,
是否有可能在某个 cpu 寄存器中分配了“arr”。(考虑 cpu 有 4 个或更多寄存器)。
否则编译器将忽略数组的寄存器存储类。
assembly - 使用汇编代码用 18PIC4550 闪烁 LED
我最近开始使用 18 PIC 4500,我第一次尝试在汇编中对其进行编程是让它在一个循环中闪烁一个 LED。但是,我没有太多使用这种语言编程的经验,因此不得不依靠其他代码片段来帮助我入门。我的代码如下:
我不明白为什么它不起作用,但认为它可能与指令周期速度有关,我认为它是 1 MHz,导致延迟过短。
非常感谢任何帮助!
microprocessors - 如何控制微处理器..?
微处理器是如何控制的?例如,指令译码器从内存接收指令后,对指令进行译码(???),译码后的指令在ALU中执行。这一切是如何依次发生的?
assembly - MOV DD 是什么意思?
在汇编语言中,指令
意味着将B
(源)的内容移动到A
(目的地)。
我突然想到了指令
这意味着什么?
我在我的实验室手册中看到了这一点。截屏:
caching - ISR、DPC 和处理器缓存
我在这里读到ISR 和 DPC 会弄脏处理器缓存。谁能解释一下如何?
c++ - 分配期间意外演员表
stm32 库中有一段代码表现得很奇怪。这是从初始化结构到定时器自动重载寄存器的分配:
我有TIM_Period = 1999999
,但是在分配之后TIMx->ARR = 33919
。较小的数字通常表示溢出,所以我检查了:(1999999-33919) / 65536 = 30
。这意味着数字在 16 位数据类型上溢出 30 次,但两个变量都是 32 位无符号整数。从结构声明中提取:
对于 TIMx:
对于 TIM_TimeBaseInitStruct:
其中__IO
定义为volatile
。
这是该作业的反汇编:
这里发生了什么..可能是外部原因导致值溢出吗?请注意,我正在通过 ST-Link 在真实硬件上进行调试,没有进行代码优化。