c语言里寄存器.1说明意思,C语言复习+寄存器地址名称映射

C语言复习+寄存器地址名称映射

一.参考资料探索者STM32F4开发板:

**《STM32F4开发指南-库函数版本》4.1小节C语言基础知识复习

4.6小节 MDK中寄存器地址名称映射**

STM32F4xx官方资料:

《STM32F4xx中文参考手册》-第7章通用IO

二.C语言复习位操作

day8-1.pngGPIOA->ODR|=1<<5;

TIMx->SR = (uint16_t)~TIM_FLAG;define宏定义关键词define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方便。

常见的格式:

#define 标识符 字符串

“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。

例如:

#define SYSCLK_FREQ_72MHz 72000000

定义标识符SYSCLK_FREQ_72MHz的值为72000000。ifdef条件编译

单片机程序开发过程中,经常会遇到一种情况,当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。条件编译命令最常见的形式为:#ifdef 标识符

程序段1

#else

程序段2

#endif

例如:#ifdef STM32F10X_HD

大容量芯片需要的一些变量定义

#endextern变量申明C语言中extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

这里面要注意,对于extern申明变量可以多次,但定义只有一次。

main.c文件:u8 id;//定义只允许一次

main()

{

id=1;

printf("d%",id);//id=1

test();

printf("d%",id);//id=2

}

test.c文件:extern u8 id;

void test(void){

id=2;

}typedef类型别名

定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。typedef unsigned char uint8_t;

typedef unsigned short int uint16_t;

typedef unsigned int uint32_t;

typedef unsigned __int64 uint64_t;结构体Struct 结构体名{

成员列表1;

成员变量2;

}变量名列表;

在结构体申明的时候可以定义变量,也可以申明之后定义,方法是:

Struct 结构体名字 结构体变量列表 ;结构体作用:同一个类型可以用数组,不同类型可以用结构体组织。

结构体可扩展性强。

举例说明:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)static关键字Static申明的局部变量,存储在静态存储区。

它在函数调用结束之后,不会被释放。它的值会一直保留下来。

所以可以说static申明的局部变量,具有记忆功能。

三.MDK中寄存器地址名称映射分析

1.51中映射方法:sfr P0 =0x80;//P0映射到地址0x80

P0=0x00//忘寄存器地址0x80赋值0x00

2.STM32中操作:GPIOA->ODR=0x00000000;值0x00000000是怎么赋值给了GPIOA的ODR寄存器地址的呢?

也就是说GPIOA->ODR这种写法,是怎么与GPIOA的ODR寄存器地址映射起来的?

day8-2.png

day8-3.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java数据库篇6——多表查询

Java数据库篇6——多表查询 1、笛卡尔积 交叉连接查询 设集合A{a, b}&#xff0c;集合B{0, 1, 2}&#xff0c;则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)} 2、 内连接查询 2.1、隐式内连接 SELECT 字段名 FROM 左表, 右表 WHERE 连接条件;多…

c语言编程经典实例利润,C语言经典编程实例100题解答

C语言经典编程实例100题 答案答案 C语言经典编程实例100题C语言程序实例100个(一) 【程序1】 题目:有1、2、3、4个数字&#xff0c;能组成多少个互不相同且无重复数字的三位数,都是多少, 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足…

Java数据库篇7——数据库设计

Java数据库篇7——数据库设计 1、第一范式 列不可再分 每一列属性都是不可再分的属性值&#xff0c;确保每一列的原子性两列的属性相近或相似或一样&#xff0c;尽量合并属性一样的列&#xff0c;确保不产生冗余数据 2、第二范式 属性完全依赖于主键或者说一个表只描述一件…

android 播放声音资源,android播放音效例子 (翻页音效、警报音效通用 只需传入声音源)...

音效播放&#xff1a;资源文件&#xff1a; res/raw/filename声音池类&#xff1a;SoundPool sp newSoundPool(同时最大播放个数&#xff0c;AudioManager.STREAM_MUSIC,0);将加载里音频文件的SoundPool添加到一个HashMap中&#xff0c;提供给以后的调用HashMap spMap newHas…

Java数据库篇8——索引、视图、存储过程、触发器

Java数据库篇8——索引、视图、存储过程、触发器 1、索引 1.1、索引是什么 在数据库表中&#xff0c;对字段建立索引可以大大提高查询速度。通过善用这些索引&#xff0c;可以令MySQL的查询和 运行更加高效 如果合理的设计且使用索引的MySQL是一辆兰博基尼的话&#xff0c;…

android--多线程,android多线程

线程的基本用法&#xff1a;android多线程编程其实并不比java多线程特殊&#xff0c;基本都是使用相同的语法&#xff0c;比如说&#xff0c;定义一个线程只需要新建一个类继承自Thread&#xff0c;然后重写父类的run()方法&#xff0c;并在里面编写耗时的逻辑即可&#xff0c;…

Java数据库篇9——备份与还原、忘记密码

Java数据库篇9——备份与还原、忘记密码 1、备份 备份的应用场景 在服务器进行数据传输、数据存储和数据交换&#xff0c;就有可能产生数据故障。比如发生 意外停机或存储介质损坏。 这时&#xff0c;如果没有采取数据备份和数据恢复手段与措施&#xff0c;就会导致数据的丢 …

android的ui怎么做到流畅,android提高UI的流畅度

android提高UI的流畅度Android中所有的界面绘制工作都是在UI线程中进行的&#xff0c;提高UI流畅度的最核心根本在于释放UI线程。即:不在主线程中做耗时的操作。很多人都知道&#xff0c;耗时的操作要放到子线程中去做&#xff0c;比如访问网络&#xff0c;比如读写sd卡。像这类…

android uboot log,RK3288 Android 8.1系统uboot logo过渡到kernel logo会花一下

在调试RK3288 Android 8.1系统遇到一个问题&#xff1a;开机启动uboot logo过渡到kernel log的过程中会花掉直到没有显示&#xff0c;再出现kernel logo。分析&#xff1a;打印串口log时发现&#xff0c;uboot阶段显示一切正常&#xff0c;进入kernel以后就开始花掉了然后变成没…

Java JDBC篇1——初识JDBC

Java JDBC篇1——初识JDBC Java DataBase Connectivity Java 数据库连接&#xff08;Java语言操作数据库&#xff09; 1、什么是JDBC 其实是官方定义的一套操作所有关系型数据库的规则&#xff08;接口&#xff09;&#xff0c;各个数据库厂商去实现这套接口&#xff0c;提供…

android socket 框架c#,C#与Android Socket通信

【实例简介】C#做服务器&#xff0c;Android做客户端&#xff0c;实现Socket通信【实例截图】【核心代码】C与Android-Socket通信-yu└── C#与Android-Socket通信├── MySocketServer│ ├── MySocketServer│ │ ├── bin│ │ │ └── Debug│ │ …

Java JDBC篇2——JDBC增删查改

Java JDBC篇2——JDBC增删查改 urljdbc:mysql://localhost:3306/test userroot passwordblingbling123. drivercom.mysql.jdbc.Driverpublic class JDBCtool {private static String urls;private static String user;private static String password;private static String d…

android商品数量加减,微信小程序实现一个简单的商品数量加减案例

简介这是一个用微信小程序原生代码实现的数量加减demo&#xff0c;主要是用于商品购物车或者商品详情修改数量使用&#xff0c;很简单哦~~~。核心js方法说明addCount(增加数量)delCount (减少数量)getCount(获取数量)实现效果如下图所示&#xff1a;微信小程序实现一个简单的商…

Java JDBC篇3——JDBC事务

Java JDBC篇3——JDBC事务 1、事务方法 方法声明功能介绍void setAutoCommit(boolean autoCommit)参数是 true 或 false 如果设置为 false&#xff0c;表示关闭自动提交&#xff0c;相当于开启事务void commit()提交事务void rollback()回滚事务 2、步骤 获取连接开启事务获…

signature=1610c03482e0c6557f7ec99f0ceeae85,Vpdes Permit No. Va006557

摘要&#xff1a;PARK 500 4100. BERMUDA HUNDRED ROAD, CHESTER, VIRGINIA 23831 TELEPHONE (804) 751-2000 March 3, 1992 Mr. A. C. Ray Virginia Water Control Board Piedmont Regional Office P. 0. Box 11143 Richmond, Virginia 23230 Subject: VPDES Permit No. VA00…

Java JDBC篇4——数据库连接池

Java JDBC篇4——数据库连接池 1、DBCP 1.1、依赖jar包 官网&#xff1a;https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 mysql-connector-java-5.1.49.jar 百度云&#xff1a;https://pan.baidu.com/s/17J2VfkGS2h44j69eB8TuFA提取码&#xff1a;n…

android plugin 镜像,cordova-plugin-screen-orientation

标题说明屏幕方向设置屏幕方向AppVeyor Travis CI Cordova屏幕方向插件Cordova插件以通用方式为 iOS。安卓和 windows UWP设置/锁定屏幕方向。 这个插件基于屏幕定向 API&#xff0c;所以API是当前的规范。插件将以下内容添加到屏幕对象( window.screen ):// lock the device o…

JAVA WEB篇1——初识JAVAWEB

JAVA WEB篇1——初识JAVAWEB JavaWeb主要指使用Java语言进行动态Web资源开发技术的统称&#xff0c;是解决相关Web互联网领域的技术总和 1、Http协议 HTTP协议&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是由W3C&#xff08;万维网联盟…

osgi框架 android,基于OSGi的Android应用模块动态加载框架设计与实现

摘要&#xff1a;伴随着移动互联网科技水平向4G的飞跃,移动终端的使用日趋常态化,移动智能设备的普及率越来越高,得到了大量使用者的追捧。与此同时,各手机操作系统下应用商店里正充斥着琳琅满目的移动应用产品,用户对移动应用软件的期望值在逐步攀升,人们对移动应用软件的功能…

JAVA WEB篇2——Servlet

JAVA WEB篇2——Servlet Servlet&#xff08;Server Applet&#xff09;是Java Servlet的简称&#xff0c;称为小服务程序或服务连接器&#xff0c;是Java语言编写 的服务器端程序&#xff0c;换句话说&#xff0c;Servlet就是运行在服务器上的Java类。 Servlet用来完成B/S架构…