2018-09-23

比如我要读 GPIOA.5 的电平状态,那么方法是:

GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);

在固件库中设置 ODR 寄存器的值来控制 IO 口的输出状态是通过函数 GPIO_Write 来实现

的:

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

该寄存器通过举例子可以很清楚了解它的使用方法。例如你要设置 GPIOA 的第 1 个端口

值为 1,那么你只需要往寄存器 BSRR 的低 16 位对应位写 1 即可:

GPIOA->BSRR=1<<1;

如果你要设置 GPIOA 的第 1 个端口值为 0,你只需要往寄存器高 16 位对应为写 1 即可:

GPIOA->BSRR=1<<(16+1)

在 STM32 固件库中,通过 BSRR 和 BRR 寄存器设置 GPIO 端口输出是通过函数

GPIO_SetBits()和函数 GPIO_ResetBits()来完成的。

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

虽然 IO 操作步骤很简单,这里我们还是做个概括性

的总结,操作步骤为:

1) 使能 IO 口时钟。调用函数为 RCC_APB2PeriphClockCmd()。

2) 初始化 IO 参数。调用函数 GPIO_Init();

3) 操作 IO。操作 IO 的方法就是上面我们讲解的方法。

在配置 STM32 外设的时候,任何时候都要先使能该外设的时钟。

1<<i是把1左移i位,每次左移以为就是乘以2,所以1<<i的结果是1乘以2的i次方

i<<1就是把i左移一位,即i乘以2,假如i=5,最后结果就是5*2=10

左边是需要计算的数,右边是需要移动的位数。

位操作只能用于整形数据,对float和double类型进行位操作会被编译器报错。

#ifndef 和 #endif 要一起使用,如果丢失#endif,可能会报错。

GPIO_InitTypedef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=50MHz;

GPIO_Init(GPIOD,&GPIO_InitStructure);

u8 是 unsigned char

u16 是 unsigned short

u32 是 unsigned int

u8,u16,u32都是unsigned  char类型,不过u8是一个字节的,u16  是2字节,u32是4字节

XXXX_InitTypedef XXXX_InitStructure是对某个结构体的申明

例如

GPIO_InitTypedef GPIO_InitStructure;

GPIO_Init(GPIOA,&GPIO_InitStructure);

优先级数字越小优先级越高,同理等同于响应优先级

组 AIRCR[10:8] bit[7:4]分配情况 分配结果

0 111 0:4 0 位抢占优先级,4 位响应优先级

1 110 1:3 1 位抢占优先级,3 位响应优先级

2 101 2:2 2 位抢占优先级,2 位响应优先级

3 100 3:1 3 位抢占优先级,1 位响应优先级

4 011 4:0 4 位抢占优先级,0 位响应优先级

不支持连续按,扫描某个按键,该按键按下之后,必须要松开,才能第二次触发,

否则不会再响应这个按键,这样的好处就是可以防止按一次多次触发,

而坏处就是在需要长按的时候比较不合适。

支持连续按,如果某个按键一直按下,则会一直

返回这个按键的键值,这样可以方便的实现长按检测。

串口设置的一般步骤可以总结为如下几个步骤:

1) 串口时钟使能,GPIO 时钟使能

2) 串口复位

3) GPIO 端口模式设置

4) 串口参数初始化

5) 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)

6) 使能串口

7) 编写中断处理函数

1. 串口时钟 使能。 。串口是挂载在 APB2 下面的外设,所以使能函数为:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1);

2. 串口复位。当外设出现异常的时候可以通过复位设置,实现该外设的复位,然后重新配置

这个外设达到让其重新工作的目的。一般在系统刚开始配置外设的时候,都会先执行复位该外

设的操作。复位的是在函数 USART_DeInit()中完成:

void USART_DeInit(USART_TypeDef* USARTx);//串口复位

比如我们要复位串口 1,方法为:

USART_DeInit(USART1); //复位串口 1

3. 串口 参数初始化。串口初始化是通过 USART_Init()函数实现的,

void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);

这个函数的第一个入口参数是指定初始化的串口标号,这里选择 USART1。

第二个入口参数是一个 USART_InitTypeDef 类型的结构体指针,这个结构体指针的成员变量用

来设置串口的一些参数。一般的实现格式为:

USART_InitStructure.USART_BaudRate = bound; //波特率设置;

USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为 8 位数据格式

define 是 C 语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供

方便。常见的格式:

#define 标识符 字符串

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

#define SYSCLK_FREQ_72MHz 72000000

定义标识符 SYSCLK_FREQ_72MHz 的值为 72000000。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 姓名:周崇杰 学号:16140120059 专业:机械设计制造及其自动化 转载自:http://blog.csd...
    CJbaby阅读 3,488评论 0 3
  • 姓名:周崇杰 学号:16140120059 专业:机械设计制造及其自动化 转载自:http://blog.csd...
    CJbaby阅读 4,709评论 0 5
  • eval 和 exec 函数 首先说一下 这两个函数的返回值是可以让程序执行的函数 eval()返回的是一个表达式...
    pythonyuan阅读 190评论 0 0
  • 箬 原色摄影 我蜷抱于弦上 与音符同舞 不会余声袅袅 无关正声雅音 但是共鸣 在情绪的瞬间 我在黑白键上蛰伏 与抑...
    安然an阅读 250评论 0 2
  • 短暂的一生,我们遇见,错过,遗憾,痛苦,重生,周而复始。若有缘,能找到自己的灵魂伴侣,与相爱的人共度一生,那自然是...
    禾小车阅读 733评论 2 1