蓝桥杯嵌入式STM32学习笔记(一)——MDK下C语言基础复习

发布者:JoyfulJourney最新更新时间:2020-02-22 来源: eefocus关键字:STM32  MDK  C语言 手机看文章 扫描二维码
随时随地手机看文章

MDK下C语言基础复习

写在前面:就在前几天我刚刚参加完了蓝桥杯的省赛,在比赛之前我阅读了社区里许多优秀博主的文章,所以也想把自己的收获当作笔记记下,希望能够帮助后面也要参赛的同学,顺便也总结一下自己这段时间的收获。


这一部分是MDK中有关C语言的部分,如果大家C语言都学得很好就忽略,主要是讲一些基本操作。


1.1位操作

在MDK下常用的位操作符和微操作技巧


C语言支持如下6钟位操作

在这里插入图片描述

其中这里与、或、异或和取反不用我多讲我在这里讲一下移位运算。

移位运算包括左移和右移

左移运算:x<右移运算:x>>K 表示:x右移k位,并在左端正数补0,负数补1(算术移位)

例子: 假设u8 A=0000 0001

A<<1=0000 0010


位操作技巧

1)不改变其他位的值的状况下,对某几位进行设值。

方法:先对需要设置的位用&操作符进行清零操作,然后用|操作符设置值。

GPIOA->CRL&=0XFFFFFF0F; //将第4-7位清0

然后再与需要设置的值进行|或运算

GPIOA->CRL|=0X00000040; //设置相应位的值


2)移位操作提高代码的可读性

可以利用移位操作让代码更直观


GPIOA->ODR|=1<<5; //PA.5输出高,不改变其他位


这样我们一目了然,5告诉我们是第5位也就是第6个端口,1告诉我们是设置为1了。


常见问题总结

Q1:0x20代表什么?


A1:0x是整型常量的表示方式。以0x开头的整型常量,代表后续字符为16进制的表达。于是0x20代表十六进制的20,也就是10进制的32.


Q2:&=、|=是什么意思


A2:按位与后赋值和按位或后赋值

扩展资料:

https://zhidao.baidu.com/question/1576758038983362220.html

内含几个例子和解释


1.2 define 宏定义

格式 #define 标识符 字符串


1.3 ifdef 条件编译

单片机程序开发过程中,经常会遇到一种情况,当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。


条件编译命令最常见的形式为:

#ifdef 标识符

程序段1

#else

程序度2

#endif


它的作用是:

当标识符已经被定义过(一般是用#define命令定义),

则会对程序段1进行编译,

否则编译程序段2。

其中#else部分也可以没有,

这个条件编译在MDK里面是用的很多的。


其实这个语句是专门用在写.h文件上的,大家记住就可以了


#ifndef __ADC_H

#define __ADC_H

/* Includes ------------------------------------------------------------------*/

#include "stm32f10x.h"

void ADC1_Init(void);

u16 ADC_Read(void);

#endif


这个是我写的ADC的.h文件,之后的.h文件也都是这么写就可以了

在程序段中写函数声明就行了


1.4 extern变量声明

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


当我们编程时候经常会在main.c中声明变量,而在.h文件中对这个变量进行重新的赋值或者操作,我们就需要在.h文件中声明这个变量在其他地方定义过了,就是运用我们的extern。大家可能这里不是很理解extern是怎么用的,不用担心我们到了之后就自然会了,这里有个印象就好

关键字:STM32  MDK  C语言 引用地址:蓝桥杯嵌入式STM32学习笔记(一)——MDK下C语言基础复习

上一篇:STM32F4设置系统时钟源为内部HSI
下一篇:stm32f4 HSE_VALUE修改

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved