嵌入式作业(第2周--- STM32/51单片机编程入门(点亮LED)

1. 实验步骤:

 (1) 安装并熟悉 Proteus 电路仿真软件,完成 C51 程序设计和仿真。

   (2) 安装 MDK5 软件和 STM32 包,熟悉 MDK 开发环境,完成一个简单的 STM32 程序,例如通过寄存器方式点亮 LED。

   (3)通过阅读 ARM、STM32 技术手册,深入思考 STM32F103 系列芯片的地址映射和寄存器映射原理,以及 GPIO 端口的初始化设置的一般步骤。

2. 对内存和外部设备(寄存器和相关管脚)的操作相同和差别: 相同之处在于,无论是对内存中的变量还是对外部设备,操作都需要通过对相应的地址进行读写。操作相同包括读取和修改数据。    差别之处在于,对内存的读写操作是通过 CPU 访问内存地址完成的,而对外部设备的操作是通过与芯片上的寄存器进行通信实现的。

3. 为什么51单片机的LED点灯编程要比STM32的简单?    由于 51 单片机架构相对简单,没有像 STM32 这样复杂的外设功能和寄存器映射表。因此,在 51 单片机上进行 LED 点灯编程相对直观和简单。

4. register 和 volatile 关键字的作用和示例说明:    - register 关键字用于建议编译器将变量存储在 CPU 的寄存器中,以提高访问速度。但是,现代编译器已经具备了智能的寄存器分配能力,因此 register 关键字的使用并不会总是产生实际的影响。    - volatile 关键字用于告诉编译器,该变量的值可能会在意料之外的情况下被改变,从而防止编译器做出不正确的优化。这通常应用于多线程环境或并发访问外设寄存器的情况。

实验思考:   

在这个实验中,我安装并熟悉了Proteus电路仿真软件,并完成了一个C51程序的设计和仿真。我还安装了mdk5软件和stm32包,学习了mdk开发环境,并完成了一个通过寄存器方式控制GPIO端口点亮LED的STM32程序。尽管没有实际的硬件支持,我仍然可以对程序进行编译和仿真测试。

通过这个实验,我深入思考了STM32F103系列芯片的地址映射和寄存器映射原理,以及GPIO端口的初始化设置的一般步骤。我阅读了ARM和STM32技术手册,从中获取了相关的理论知识,并结合实践进行了思考。

以下是我对一些问题的心得体会:

1. 嵌入式C程序代码对内存(RAM)中的各变量的修改操作,与对外部设备(寄存器->对应相关管脚)的操作有哪些相同与差异?

相同点:无论是对内存中的变量还是对外部设备(寄存器)进行操作,我们都需要进行读取和写入操作。这些操作都需要考虑数据的一致性和正确性。

差异点:对内存中的变量进行修改操作时,我们可以直接通过变量名进行操作,而对外部设备的操作则需要通过特定的寄存器和相关管脚来实现。此外,对外部设备的操作可能涉及特定的协议和通信方式。

2. 为什么51单片机的LED点灯编程要比STM32的简单?

这主要是由于51单片机的架构相对简单,仅由一个单独的处理器核心组成。因此,在51单片机上进行LED点灯编程时,我们只需要简单地配置相关的寄存器和管脚即可实现。

而STM32系列芯片拥有更加复杂的架构和功能,包含了多个处理器核心和丰富的外设。因此,进行STM32的LED点灯编程时,需要进行更多的初始化和配置,以确保正确地控制GPIO端口。这是为了支持更多的功能和灵活性,但也增加了编程的复杂性。

通过了解了这些问题,我对嵌入式系统的开发和原理有了更深入的了解。这些实践不仅帮助我熟悉了相关的开发工具和软件,还让我更好地理解了嵌入式系统的底层原理。在未来的学习和工作中,我将继续努力深入研究嵌入式系统,提高自己的技能水平。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值