用C语言和汇编给寄存器赋值

1、用汇编–要根据目标CPU的体系,用对应的汇编类型编写

ldr r0, =0X020C4068 	/* CCGR0 */
ldr r1, =0XFFFFFFFF  
str r1, [r0]

2、用C语言–要知道相关寄存器地址–官方会提供参考手册,上面有

芯片手册与板子电路图

/*  * IOMUX相关寄存器地址  */
#define SW_MUX_GPIO1_IO03 	*((volatile unsigned int *)0X020E0068)
#define SW_PAD_GPIO1_IO03 	*((volatile unsigned int *)0X020E02F4)

对于STM32而言,它基于此,使用一个结构体将一个外设的所有寄存器都放到一起

3、技术参考手册和数据手册

1)STM32微控制器产品的技术参考手册和数据手册
技术参考手册:是有关如何使用该产品的具体信息,包含各个功能模块的内部结构、所有可能的功能描述、各种工作模式的使用和寄存器配置等详细信息。技术参考手册不包含有关产品技术特征的说明,这些内容在数据手册中。
数据手册中的内容包括:产品的基本配置(如内置Flash和RAM的容量、外设模块的种类和数量等),管脚的数量和分配,电气特性,封
装信息,和定购代码等。
2)STM32微控制器产品中大多数功能模块都是在多个产品(或所有产品)中共有的并且是相同的,因此只有一份STM32微控制器产品的技术参考手册对应所有这些产品。
在这里插入图片描述

4、芯片选择与使用的常识

1)通常在芯片选型的初期,首先要看数据手册以评估该产品是否能够满足设计上的功能需求;
2)在基本选定所需产品后,需要察看技术参考手册以确定各功能模块的工作模式是否符合要求;
3)在确定选型进入编程设计阶段时,需要详细阅读技术参考手册获知各项功能的具体实现方式和寄存器的配置使用。
4) 在设计硬件时还需参考数据手册以获得电压、电流、管脚分配、驱动能力等信息

5、存储器的组织

1)程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。
2)其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间,请参考相应器件的数据手册中的存储器映像图
3)芯片公司肯定会写好底层的库,让客户能用芯片的功能(很多bug,只有芯片公司的设计师才知道怎么避免,涉及保密和熟悉程度),怎么用就是根据需求进行硬件设计,编程设计

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C语言中对寄存器进行赋值,可以使用内联汇编(inline assembly)或特殊的关键字。 使用内联汇编可以直接在C代码中嵌入汇编指令,通过指定寄存器名称来进行赋值操作。下面是一个使用内联汇编寄存器赋值的示例: ```c #include <stdio.h> int main() { int value; asm("movl %1, %0" : "=r" (value) : "r" (42)); printf("Value: %d\n", value); return 0; } ``` 在上面的示例中,使用`asm`关键字来嵌入汇编代码。`movl`指令用于将立即数42赋值寄存器,并将结果存储在`value`变量中。`%0`和`%1`是占位符,用于指定操作数的位置。`=r`和`r`表示使用寄存器约束,告诉编译器将`value`和42分别放入寄存器中。 除了内联汇编外,一些C编译器还提供了特殊的关键字来直接操作寄存器。这些关键字通常是非标准的,因此在不同的编译器中可能有所差异。例如,GCC编译器可以使用`__asm__`关键字来进行类似的操作: ```c #include <stdio.h> int main() { register int value asm("eax"); __asm__ ("movl %0, %1" : "=r" (value) : "r" (42)); printf("Value: %d\n", value); return 0; } ``` 在上面的示例中,`register`关键字用于声明一个寄存器变量`value`,并使用`asm`关键字来嵌入汇编代码。`eax`寄存器赋值为42,并将结果存储在`value`变量中。 需要注意的是,直接操作寄存器可能会导致代码的可移植性和可读性降低。因此,应该谨慎使用这些技术,并根据特定的需求进行选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值