第8章-STM32时钟与GPIO设计.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
stm32f10x.h中GPIO代码剖析 有了这样的宏,就可用以下方式来修改GPIO寄存器: GPIO_TypeDef * GPIOx; // *定义GPIOx指针变量为GPIO_TypeDef结构体型 GPIOx = GPIOA; //把指针地址设置为宏GPIOA地址 GPIOx->CRL = 0xFFFF FFFF; //“->”通过指针访问并修改GPIOA_CRL寄存器 通过类似的方式,我们就可以给具体的寄存器写上适当的参数,控制STM32了。 这只是库开发的皮毛,库提供了更简单的开发方式。 使用GPIO 1. 配置寄存器:选定GPIO的特定功能,最基本的如:选择作为输入还是输出端口。 2. 数据寄存器:保存了GPIO的输入电平 或 将要输出的电平。 3. 位控制寄存器:设置某引脚的数据 为1或0,控制输出的电平。 4. 锁定寄存器:设置某锁定引脚后,就不能修改其配置。 关于GPIO库函数 7.6 LED流水灯实验 实验学习方法,先学习例程编写方法,掌握后,在实验过程中改写程序、逐渐编写程序! 想要控制LED灯,当然是通过控制STM32芯片的I/O引脚电平的高低来实现。 LED流水灯实验 LED流水灯实验 LED实验中用到了RCC跟GPIO这两个外设。环境配置如图: 用到的源程序: main.c led.c led.h Led流水灯主程序:main.c #include "led.h" void Delay(__IO uint32_t nCount) //简单延时函数 { for(; nCount != 0; nCount--);} int main(void) { LED_GPIO_Config(); //函数在led.c中定义 while (1) { LED1( ON ); //函数在头文件led.h中定义 Delay(0x0FFFFF); LED1( OFF ); LED2( ON ); Delay(0x0FFFFF); LED2( OFF ); LED3( ON ); Delay(0x0FFFFF); LED3( OFF ); } } led.c--初始化函数 LED_GPIO_Config() #include "led.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" void LED_GPIO_Config(void) { /*用库定义一个GPIO_InitTypeDef类型的结构体*/ GPIO_InitTypeDef GPIO_InitStructure; /*开启GPIOC的外设时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); /*选择要控制的GPIOC引脚 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; /*设置引脚模式为通用推挽输出*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; led.c //设置引脚速率为50MHz GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //端口初始化库函数,利用上面设置的参数初始化GPIOC GPIO_Init(GPIOC, &GPIO_InitStructure); //引脚置位库函数,关闭led灯 GPIO_SetBits(GPIOC, GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5); } 函数LED_GPIO_Config()实现了所有为点亮led的配置 led.h头文件 #ifndef __LED_H // 条件编译, 防止头文件重复包含 #define __LED_H //独立写头文件,方便以后扩展使用 #include "stm32f10x.h" /** the macro definition to trigger the led on or off * 0 - on *1 - off */ #define ON 0 #define OFF 1 /* 带参宏,可像内联函数一样使用*/ #define LED1(a) if (a) \ GPIO_SetBits(GPIOC,GPIO_Pin_3); \ else \ GPIO_ResetBits(GPIOC,GPIO_

文档评论(0)

177****7891 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档