嵌入式Linux系统开发基础【02】

一、C51程序仿真

部分代码截图
在这里插入图片描述
原理图
在这里插入图片描述
将代项目编译后生成的hex文件导入
在这里插入图片描述

运行
在这里插入图片描述

二、STM32F103C8T6寄存器方式点亮LED

部分代码截图
在这里插入图片描述
烧录软件
在这里插入图片描述
电路连接

在这里插入图片描述
成果
在这里插入图片描述

三、理论概念

1. 题目1

通过以上实践,结合阅读ARM、STM32技术手册,深入思考STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置的一般步骤。回答:1)嵌入式C程序代码对内存(RAM)中的各变量的修改操作,与对外部设备(寄存器—>对应相关管脚)的操作有哪些相同与差别?2)为什么51单片机的LED点灯编程要比STM32的简单?

1)嵌入式C程序代码对内存中的变量的修改操作与对外部设备(寄存器)的操作有相同之处和差异之处。

相同之处:

都是通过对内存或寄存器的读写来实现对变量或设备的操作。
都需要使用特定的语法和指令来进行读写操作。
差异之处:

对内存中的变量进行读写操作时,编译器会将变量的值存储在内存中的特定地址,并通过变量名来引用。读取变量值只需要通过变量名读取对应地址的值,修改变量值只需要通过变量名修改对应地址的值。
对外部设备的操作需要通过访问寄存器来实现,寄存器的地址一般是固定的,通过读写寄存器来实现对设备的控制。这些寄存器通常包含设备的状态、控制和配置信息,通过对寄存器的位操作来实现对设备的控制。
2)51单片机的LED点灯编程相比STM32要简单的原因有以下几点:

51单片机的架构相对简单,指令集也相对较少,编程难度较低。相比之下,STM32系列芯片的架构更加复杂,指令集更加丰富,需要更深入的了解和学习。
51单片机的开发工具和库函数比较成熟,有很多现成的示例代码和文档可供参考。而对于STM32系列芯片,由于其更复杂的架构,开发工具和库函数的学习和使用相对较为繁琐。
51单片机的IO口比较简单,LED点亮只需要将IO口输出高电平即可。而STM32系列芯片的GPIO端口功能较多,需要进行初始化设置,如配置引脚为GPIO输出模式、设置引脚输出电平等。这些操作增加了编程的复杂度。
总的来说,STM32相比51单片机更加强大和灵活,但也更加复杂,需要更多的学习和理解。

2.题目2

与PC平台上的一般程序不同,嵌入式C程序经常会看见 register和volatile 关键字,请解释这两个变量修饰符的作用,并用C代码示例进行说明。

register和volatile是嵌入式C程序中常见的变量修饰符,它们的作用如下:

1)register关键字:用于提示编译器将变量存储在寄存器中,以提高程序的运行速度。它的作用是对变量进行寄存器分配优化,但具体是否真正分配到寄存器中,由编译器决定。

示例代码:

register int counter;

上述代码中,counter变量将被优化为存储在寄存器中,以提高对该变量的访问速度。

2)volatile关键字:用于告诉编译器该变量可能被程序以外的因素修改,因此每次访问该变量时都必须从内存中读取或写入,而不是使用寄存器中的副本。这样可以确保变量的值在程序的不同部分之间保持一致。

示例代码:

volatile int sensorData;

上述代码中,sensorData变量被标记为volatile,表示该变量的值可能会被外部事件或其他线程修改,因此每次访问该变量时都必须实时从内存中读取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值