推荐阅读最新更新时间:2024-11-13 12:21
ARM_Core的处理器模式与寄存器,结构杂谈
ARM处理器的工作状态:ARM处理器有两种工作状态。在程序的执行过程中,处理器可以在两种工作状态之间切换,并且不影响相应寄存器中的内容。 ARM状态,此时处理器执行32位对齐的ARM指令;BX指令,当操作数寄存器最低位为0时,进入ARM状态。 Thumb,此时处理器执行16位对齐的Thumb指令。BX指令,当操作数寄存器最低位为1时,进入Thumb状态。 BX(Branch Exchange):BX Rn; ##其中Rn可以是R0-R15中的任意一个。指令通过将寄存器Rn的内容拷贝到程序计数器PC来完成4Gbyte的地址空间的跳转。 在进入异常中断后,ARM内核会自动切换到ARM状态,所以在异常中断处理程序入口的
[单片机]
单片机定时器的寄存器
标准的 51 单片机内部有 T0 和 T1 这两个定时器,T 就是 Timer 的缩写,现在很多 51 系列单片机还会增加额外的定时器,在这里我们先讲定时器 0 和 1。前边提到过,对于单片机的每一个功能模块,都是由它的 SFR,也就是特殊功能寄存器来控制。与定时器有关的特殊功能寄存器,有以下几个,大家不需要去记忆这些寄存器的名字和作用,你只要大概知道就行,用的时候,随时可以查手册,找到每个寄存器的名字和每个寄存器所起到的作用。 表 5-1 的寄存器是存储定时器的计数值的。TH0/TL0 用于 T0,TH1/TL1 用于 T1。 表 5-1 定时值存储寄存器 名称 描述 SFR 地址 复位值 TH0 定时器 0 高字节 0
[单片机]
STM8在IAR创建工程后编译时出现Error[Li005]
STM8L在IAR中创建工程后,因为是新手,创建工程后编译出现以下错误: Error : no definition for GPIO_Init 原因是库文件添加不全,因只是用USART、I2C等功能,其余的库文件因不熟悉环境漏掉了关联的库文件导致编译错误。 如不太熟悉库文件,建议全部加载上。
[单片机]
iTOP-4412嵌入式开发板ioremap控制GPIO寄存器
GPIO 的寄存器通过 ioremap函数转换之后,可以通过直接控制虚拟地址来控制物理地址(寄存器的实际地址),这样就实现 GPIO的读和写以及其它任意功能。 需要的基础知识 虚拟地址和物理地址 内存管理单元概念 linux 驱动模块的加载 主要内容 GPIO 的寄存器文档详细介绍和说明 函数 ioremap的用法 使用 ioremap实现对 GPIO的控制 硬件 以 LED2(靠近蜂鸣器的 LED)为例,介绍原理图以及Datasheet 中对应的寄存器。 原理图 打开底板原理图 pdf文档,如下图所示,选取 LED2,网络标号是 KP_COL0。 通过查找网络标号 KP_COL0,发现 KP_COL0接到连接器上,如下图所示
[单片机]
STM8 窗口看门狗(WWDG)
STM8窗口看门狗介绍 窗口看门狗用于监测由于外部干扰或不可预知的逻辑条件所产生的软件错误,这样的软件错误通常会导致应用程序不按照预期的方式运行。除非程序在递减计数器的T6位变为0之前刷新递减计数器,看门狗电路将在一个预置的时间间隔后产生系统复位;如果在7位的递减计数器数值达到窗口寄存器数值之前刷新递减计数器,同样会产生系统复位。这就意味着只能在一个有限的时间窗口内刷新递减计数器。 WWDG主要功能 ●可编程的自由运行递减计数器 ●有条件的复位 ─如果开启了看门狗,当递减计数器的数值小于0x40时产生复位 ─如果开启了看门狗,当在指定的时间窗口之外重加载递减计数器的数值(见图27)时产生复位 ●硬件或软件启动看门狗(由选择字节指
[单片机]
STM8 汇编学习笔记1:CPU简介
写在前面 最近项目中涉及到一些实时性要求很高的底层驱动设计,在IAR下用C语言写完后总是感觉响应不是足够快,平时在网上会看到很多嵌入式大牛直接通过汇编来写,效果超级明显。之前在学校里接触过51的汇编,感觉又low又难懂。随着时间的推移,越来越有一种潜意识,觉得高级程序虽然有着开发效率高的特点,但有一些地方的局限还是很多大的,如果想要继续深入地了解和运用一些单片机底层的资源,能且只能通过汇编来实现。现在工作中接触的MCU主要是STM8系列,所以就从他开始吧! STM8 简介 意法半导体的这款8位单片机一直知名度不高,在上学时,一般耳熟能详的八位机都有PIC、51、AIR之类,STM系列也只听说过STM32,工作后接触到S
[单片机]
STM8新建IAR工程
1、准备标准库函数文件,官方的标准库函数为stsw-stm8069,解压后如下图: 2、新建一个文件夹,本例子命名为stm8-project,新建四个子文件夹,分别命名为APP、Readme、USER、STM8S_StdPerph_Driver: 3、从库函数例程以下目录拷贝文件 inc和src两个文件夹以及内容至STM8S_StdPerph_Driver目录。 4、从库函数例程以下目录拷贝文件 main.c、stm8s_conf.h、stm8s_it.c 、stm8s_it.h到USER目录。 5、在Readme目录下新建一个文本文件,命名为readme.txt,这个主要用来记录开发进度: 6、打开I
[单片机]
STM8 时钟分频寄存器
STM8时钟分频寄存器(CLK_CKDIVR) 地址偏移值:0x06 复位值:0x18 位7:5 保留。始终为0。 位4:3 HSIDIV :高速内部时钟预分频器 由软件写入,用于指定HSI分频因子。 00:fHSI=fHSI RC输出 01:fHSI=fHSI RC输出/2 10:fHSI=fHSI RC输出/4 11:fHSI=fHSI RC输出/8 位2:0 CPUDIV :CPU时钟预分频器 由软件写入,用于指定CPU时钟预分频因子。 000:fCPU=fMASTER 001:fCPU=fMASTER/2 010:fCPU=fMASTER/4 011:fCPU=fMASTER/8 100:fCPU=fMASTER
[单片机]