版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM微控制器与嵌入式系统
6C语言基础复习主讲人:景妮琴北京电子科技职业学院C语言基础复习位操作define宏定义ifdef条件编译extern变量申明typedef变量别名结构体符号
描述
运算规则&
按位与两个位都为1时,结果才为1|
按位或
两个位都为0时,结果才为0^
按位异或两个位相同为0,相异为1~
取反0变1,1变0<<
左移各二进位全部左移若干位,高位丢弃,低位补0>>
右移各二进位全部右移若干位,对无符号数,高位补0位操作位操作:就是对类型变量可以在位级别进行操作C语言支持下面6种位操作:位操作1.不改变其他位的情况下,对某几位进行设值方法:对需要设置的位用“&”操作符进行清零操作,然后用“|”操作符设值。例:要改变GPIOA->BSRRL的状态,可以先对寄存器的值进行“&”清零操作,然后进行“|”或运算。GPIOA->BSRRL&=0xFF0F;//这是将第4-7位清0GPIOA->BSRRL|=0x0040;//设置相应位的值,不改变其他位的值位操作2.移位操作提高代码的可读性GPIOx->ODR=(((uint32_t)0x01)<<pinpos);这个操作就是将ODR寄存器的第pinpos位设置为1使用左移比设定一个固定的值要好看,并且重用性高。如:GPIOx->ODR=(((uint32_t)0x03)<<4);GPIOx->ODR=0x0030;这两个代码当然是前一句的重用性高一些。位操作3.取反操作技巧取反操作经常与“&”操作一起使用,把变量的某位清零如:GPIOx->ODR&=~(((uint32_t)0x01)<<4);这个代码就是把bit4位清零10011111000000010000010011111011位操作4.位操作实例
(1)把变量的某位清零:此处我们以变量a代表寄存器,并假设寄存器中本来已有数值,此时我们需要把变量a的某一位清零,且其它位不变。如下代码清单:1//定义一个变量a=10011111b(二进制数)2unsignedchara=0x9f;3//对bit2清零4a&=~(1<<2);
5//括号中的1左移两位,(1<<2)得二进制数:00000100b6//按位取反,~(1<<2)得11111011b7//假如a中原来的值为二进制数:a=10011111b8//所得的数与a作”位与&”运算,a=(10011111b)&(11111011b),9//经过运算后,a的值a=10011011b&10//a的bit2位被被零,而其它位不变。10011011
100000110000000100000100100000110000010010000111位操作4.位操作实例(2)对变量的某位进行赋值寄存器位通过“|=”可以对某位进行赋值。1//a=10000011b2a|=(1<<2);3//a=10000111b位操作4.位操作实例(3)对变量的某位取反我们需要对寄存器的某个位进行取反操作,即1变0,0变1,这可以直接用如下操作,其它位不变,见代码清单。1//a=10010011b2//把bit6取反,其它位不变34a^=(1<<6);5//a=11010011bdefine宏定义define是C语言中的预处理命令,用于宏定义,可以提高源代码的可读性,方便编程。常见的格式:#define标识符字符串其中“标识符”是指:宏定义的宏名“字符串”可以是常数、表达式、格式串等例:#definePLL_M8定义PLL_M的值为8ifdef条件编译单片机程序开发过程中,经常会遇到一些情况:当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。条件编译命令的常见形式:#ifdef标识符程序段1#else程序段2#endif作用:当标识符已经被定义过(一般使用#define命令定义),则对程序段1进行编译,否则编译程序段2。extern变量声明C语言中extern可以置于变量或函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。注意,对于extern声明变量可以多次,但定义只有一次。例:如果看到externu16USART_RX_STA,那么一定就有一个地方定义了u16USART_RX_STA还要注意:extern只能引用,不能赋值。typedef类型别名typedef用于为现有类型创建一个新的名字,或称为类型别名,用来简化变量的定义。typedefstruct{uint32_tGPIO_Pin;GPIOMode_TypeDefGPIO_ModeGPIOSpeed_TypeDefGPIO_SpeedGPIOOType_TypeDefGPIO_OType;GPIOPuPd_TypeDefGPIO_PuPd}GPIO_InitTypeDef;这个意思就是为结构体定义了一个类型别名GPIO_InitTypeDef这样就可以通过这个类型定义变量了:GPIO_InitTypeDefmy_GPIO;结构体声明结构体类型:Struct结构体名{成员列表;}变量名列表;StructU_T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北师大版高三历史上册阶段测试试卷含答案
- 2025年沪教新版选修3物理上册阶段测试试卷含答案
- 2025年粤人版高一数学下册阶段测试试卷
- 2025年北师大版九年级地理下册月考试卷含答案
- 2025年湘教版选择性必修1历史下册月考试卷含答案
- 2025年浙教新版必修三英语上册阶段测试试卷
- 公共文化服务理论与实务知到智慧树章节测试课后答案2024年秋四川艺术职业学院
- 2025年度美容院美容产品包装设计与生产合同4篇
- 二零二五年度农业休闲观光园开发合同4篇
- 二零二五年度绿色生态农用地流转合同4篇
- 2024年苏州工业园区服务外包职业学院高职单招职业适应性测试历年参考题库含答案解析
- 人教版初中语文2022-2024年三年中考真题汇编-学生版-专题08 古诗词名篇名句默写
- 2024-2025学年人教版(2024)七年级(上)数学寒假作业(十二)
- 山西粤电能源有限公司招聘笔试冲刺题2025
- 2024年高考全国甲卷英语试卷(含答案)
- 2024光伏发电工程交流汇流箱技术规范
- 旅游活动碳排放管理评价指标体系构建及实证研究
- 2022年全国职业院校技能大赛-电气安装与维修赛项规程
- 小学德育养成教育工作分层实施方案
- 2024年湖南高速铁路职业技术学院单招职业技能测试题库附答案
- 黑枸杞生物原液应用及产业化项目可行性研究报告
评论
0/150
提交评论