嵌入式C语言开发

article/2025/8/22 19:58:06

这是我的第一篇对ARM有有疑问并展开调查的文档总结,以备之后查阅。

首先的疑惑是发现之前的源码中都是在对寄存器做操作,所以对寄存器的地址是怎么被确定的就很疑惑。
搜索引擎关键词:嵌入式 寄存器 基地址 使用
参考《嵌入式15——HAL 库中寄存器地址名称映射分析》(https://zhuanlan.zhihu.com/p/91331682),

可以看到这个地址是跟字长、总线相关的。
然后参考《嵌入式C语言开发—存储器与寄存器》(https://blog.csdn.net/weixin_30439067/article/details/98448978),可以到有关的内容是在ARM的存储器映射相关的,
然后参考《内存或寄存器定义和赋值》(https://blog.csdn.net/tianya58198/article/details/7176043),说了一下以下的写法:

#define rDISRC0     (*(volatile unsigned *)0x4b000000) //DMA 0 Initial source
rDISRC0 = 0x38000000  //将0x38000000数据赋值给rDISRC0

当然还有ARM 寄存器基本概念,参考《嵌入式-ARM寄存器基本概念》(https://wenku.baidu.com/view/0092ddd1d5d8d15abe23482fb4daa58da0111cb0.html),注意区分ARM自身寄存器(37个)和各家公司芯片中自己实现的外设寄存器。

《嵌入式-ARM寄存器基本概念》(http://news.eeworld.com.cn/mcu/2012/0703/article_9308.html)

无论是学习哪一种处理器,首先需要明确的就是这种处理器的寄存器以及工作模式。
ARM有37个寄存器,其中31个通用寄存器,6个状态寄存器。
这里尤其要注意区别的是ARM自身寄存器和它的一些外设的寄存器的区别。
ARM自身是统一架构的,也就意味着37个寄存器无论在哪个公司的芯片里面都会出现。但是各家公司会对ARM进行外设的扩展,所以就出现了好多外设寄存器,一定要与这37个寄存器区别开来!!!

还有嵌入式驱动开发的理解:《嵌入式驱动开发是不是相当于寄存器编程?》(https://www.zhihu.com/question/467749782)

总结,
以及接触到的这些芯片(8051、stm32)、操作系统、架构(rsiv)、
esp32 、arm cortex m4、ARM 11、linux、Windows
片内资源,片指的是啥?

区分芯片、CPU、MCU、ARM产品线、操作系统内核、架构。

参考:
《嵌入式linux-ARM体系结构及接口技术,ARM产品线》(https://www.pianshen.com/article/4634155382/)

《ARM架构—— Cortex-M3与Cortex-M4特点概述》(https://blog.csdn.net/weixin_42092278/article/details/102884186)

处理器和微控制器差别
微控制器包含处理器,处理器只是其中一小部分,具体包含存储器、时钟生成、分配逻辑、系统总线以及外设(I/O接口单元、通信接口、定时器、ADC、DAC等等),如图1-1所示:
微控制架构

即使处理器相同,但是不同芯片厂商根据不同的应用场景选择不同的特性模块就能设计出不同特性的微控制器。
Cortex-M3与Cortex-M4处理器均使用32位架构,寄存器组中的内部寄存器、数据通路以及总线接口都是32位。Cortex-M处理器使用的指令集架构(ISA)为Thumb ISA,基于Thumb-2技术并同时支持16位和32位指令。

还有重磅级的arm开发者网址(https://developer.arm.com/ip-products/system-ip),
还有arm cortex-M系列处理器对比表:
在这里插入图片描述
在这里插入图片描述
For more information, contact your Arm account manager today or explore the processors in more detail here: developer.arm.com/ip-products/processors/cortex-m。快捷链接

还有IP的概念:(https://developer.arm.com/ip-products/system-ip)

The Foundation for Building Better Systems
Arm System IP enables system designers to configure and build performant, power efficient SoCs whilst further differentiating by combining Arm processors with their own IP elements via industry standard AMBA interfaces. Arm interconnects, debug and trace components and controllers are scalable across many different applications, from tiny IoT devices to large enterprise SoCs.
在这里插入图片描述

以及STM32,STM32就是采用ARM cortex-M4处理器的微控制器,
ST即STMicroelectronics,意法半导体,
可查看意法半导体网站中stm32的产品主页(https://www.st.com/zh/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html)


http://chatgpt.dhexx.cn/article/RYxp5H5k.shtml

相关文章

嵌入式C语言编译过程

1.预处理 gcc -E -o a.i 001.c 把001.c输出为a.s文件。预处理的本质是把宏定义替换处理。#define ABC 123 2.编译 gcc -S -o a.s 001.c 3.汇编 gcc -c -i a.s 001.c 把c文件生成汇编文件 4.链接 gcc -o build 001.c把001.c生成build.exe可执行文件,从预处理开始。

嵌入式C语言自我修养分享课件

一.异构计算 1.背景: 随着物联网、大数据、人工智能时代的到来,海量的数据分析和大量复杂的运算对CPU 的算力要求越来越高,CPU 的大部分资源用于缓存和逻辑控制,适合运行各种复杂的串行程序,但是单核或者多核CPU处理性…

标准c语言与嵌入式,嵌入式C语言与C语言的区别

嵌入式C语言与C语言的区别:最常用的系统编程语言是C,它是在汇编语言中使用的一种简单的编程语言,源代码采用自由格式。Embeddedc是c语言用于编写嵌入式软件的扩展,这两者有什么区别? 首先是启动过程 1.普通C语言程序的…

嵌入式 C 语言(上)

目录 基础知识数据类型const 用法作用域与 static 用法extern 用法 基础知识 嵌入式C语言和普通C语言在语法上几乎没有差别,其主要差别在于普通C语言的运行环境是OS之上,有很多的标准库函数支撑调用,分配的内存是电脑的内存,其处…

嵌入式C语言

文章目录 一、学会使用char/short/int关键字二、学会使用 if & switch三、学会使用 for & while四、学会使用static关键字五、学会使用define关键字六、学会使用typedef关键字七、学会使用enum关键字八、学会使用struct类型九、学会使用指针类型十、学会使用回调函数十…

嵌入式开发之C语言基础(一)

目前是一名大二升大三的学生,早就有想法写博文了,但是因为自己的拖延一直到现在才开始着手。关于博文,我有以下打算:把C语言再重新过一遍,毕竟嵌入式开发C语言的重要性不言而喻;接下来我还会有一些关于单片…

极简嵌入式C语言教程——从入门到入土(1)

文章目录 第一章&#xff1a;入门1.Hello World!2.C语言标识符与关键字(1)标识符&#xff1a;(2)关键字 3.数据类型与运算符(1)变量与常量<1>变量<2>变量的定义<3>常量 (2)运算符<1>算术运算符<2>自增、自减运算符<3>赋值与赋值组合运算符…

STM32中常用的C语言知识点,开始复习!

要学嵌入式&#xff0c;关注我要学嵌入式&#xff0c;嵌入式猛男的加油站。 C语言是单片机开发中的必备基础知识&#xff0c;这里就列举部分STM32学习中会遇见的C 语言基础知识点。 01 位操作 下面我们先讲解几种位操作符&#xff0c;然后讲解位操作使用技巧。C语言支持如下6中…

嵌入式C语言(入门必看)

目录 STM32的数据类型 const关键字 static 关键字 volatile关键字 extern关键字 struct结构体 enum typedef #define 回调函数 #ifdef 、#ifndef、#else 、#if 嵌入式开发中既有底层硬件的开发又涉及上层应用的开发,即涉及系统的硬件和软件,C语言既具有汇编语言操…

用单层感知器完成逻辑或运算的学习过程

用单层感知器完成逻辑或运算的学习过程 这道题目是我“认知科学”&#xff08;专业必修/doge&#xff09;课程的结课作业题之一&#xff0c;目的在于加深对单层感知器的理解&#xff0c;对于后续学习神经网络打下基础。 有关知识&#xff1a; B站有关视频 单层感知器的学习过…

python中逻辑运算_【多选题】Python 中用于表示逻辑与、逻辑或、逻辑非运算的关键字分别是( ) A. and B. add C. or D. not...

【多选题】Python 中用于表示逻辑与、逻辑或、逻辑非运算的关键字分别是( ) A. and B. add C. or D. not 更多相关问题 A.He has been asked to join the committee.B.There are several new people on the c A.fill inB.equipC.fitD.prove A.encounterB.discernC.seeD.fre…

逻辑运算符简介, 逻辑与,逻辑或,逻辑非和逻辑运算符里的短路运算规则

1&#xff0c;逻辑与 && 符号两边都为true&#xff0c;结果才为true 一假则假 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"…

R语言的逻辑与、逻辑或和元素逻辑与、元素逻辑或的区别

版权声明&#xff1a;转载请注明作者&#xff08;独孤尚良dugushangliang&#xff09;出处&#xff1a;https://blog.csdn.net/dugushangliang/article/details/116463648 参阅&#xff1a;https://www.runoob.com/r/r-basic-operators.html 下图为R运行结果。首先对a、b赋值&a…

Java逻辑操作符——逻辑非、逻辑与、逻辑或和逻辑异或

先上一段java代码&#xff0c;通过具体例子来理解抽象概念 public class 布尔值 {public static void main(String[] args) {boolean 逻辑非的值_测试1 true;boolean 逻辑非的值_测试2 false;System.out.println("逻辑非的值_测试1:"!逻辑非的值_测试1);System.ou…

逻辑与和按位与、逻辑或和按位或的区别

首先分别明确一下他们各自的概念。 按位与和按位或 按位与和按位或都属于位操作符。 注意&#xff1a;位操作符的操作数必须是整数。 按位与“&” 按二进制位对应的位进行与运算&#xff0c;对应位都为1时&#xff0c;结果才为1 3&5 3的二进制&#xff1a; 00000…

JS中的逻辑与和逻辑或

JS中的逻辑或||符号&#xff1a; 从字面上来说&#xff0c;只有前后都是 false 的时候才返回 false&#xff0c;否则返回 true。 console.log(5 > 6|| 6 > 5) //返回true5>6为false 但是 6>5为true 所以返回 true 总结&#xff1a;一真为真 特殊运算方法&#xff…

逻辑或( || )和逻辑与( )的关系

逻辑或&#xff0c;符号为“||”&#xff0c;只有操作数都是假&#xff0c;结果才是假。&#xff08;全假才为假&#xff09; 逻辑与&#xff0c;符号为“&&”&#xff0c;只有操作数都是真&#xff0c;结果才是真。&#xff08;全真才为真&#xff09; 如下图&#xf…

计算机逻辑与 或 非的表达式,计算机算数和,逻辑与,逻辑或,逻辑非分别是什么意思...

蔷祀的回答: 1、算术和:算术和就是所有的加数都是非负的(整数或0)得到的和。 2、逻辑与:逻辑与即1101 & 0100,就是按位相与,与的概念可以同俗的理解为,一个电路有两个串联的开关,只有同时关闭两个开关电路才通,打开任意一个开关电路都不通,所以那两个数逻辑与的结…

逻辑与(),逻辑或(||),and(),or(|)

一、背景、 这四个逻辑运算符&#xff0c;大家都知道&#xff0c;但是有时候会凌乱&#xff0c;再者就是我自己想写一点基础的东西&#xff0c;巩固一下自己&#xff0c;也算是一种笔记&#xff0c;不但自己会了&#xff0c;还可以分享给大家一起学习。 二、目的、 巩固自己…

逻辑同或,逻辑异或,逻辑与,逻辑或

一、逻辑异或 真⊕假真 假⊕真真 假⊕假假 真⊕真假 或者为&#xff1a; True ⊕ False True False ⊕ True True False ⊕ False False True ⊕ True False 二、逻辑同或 相同为一&#xff0c;不同为零。 三、逻辑与 1.逻辑与&& 表示逻辑与的意思&#xff0…