关于GPIO库函数的重点函数:P122

  GPIO_Init() :根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器;

  GPIO_ReadInputDataBit():读取指定端口管脚的输入;

  GPIO_SetBits():设置指定的数据端口位;

  GPIO_ResetBits(): 清除指定的数据端口位;

  GPIO_PinRemapConfig(): 改变指定管脚的映射;----------端口映射是很有特色的功能;也是重点知识

  GPIO_EXTILineConfig():选择GPIO管脚用作外部中断线路;

 /*Include---------------------------*/
 #include"stm32f10x_lib.h"        //包含所有的头文件
 #include<stdio.h>

 //----------------函数声明--------------------
 void Delay_MS(u16 dly);
 void RCC_Configuration(void);
 void GPIO_Configuration(void);

 /*******************************************************************************
 * Function Name  : main
 * Description    : Main program.
 * Input          : None
 * Output         : None
 * Return         : None
 *******************************************************************************/
 int main(void)
 {
     u8  data, i;
     #ifdef DEBUG
     debug();
     #endif
     //------------初始化------------
     RCC_Configuration();
     GPIO_Configuration();

     //------------164通信-----------
     //CLK:PB5 上升沿 CLR:PE11置1 DATA:PE10
     GPIO_SetBits(GPIOE, GPIO_Pin_11);
     data = 0x30;
     ;i<;++i)
     {
         GPIO_ResetBits(GPIOB, GPIO_Pin_5);    //PB5清零
         if((data&0x80) == 0x00)
             GPIO_ResetBits(GPIOE, GPIO_Pin_10);
         else
             GPIO_SetBits(GPIOE, GPIO_Pin_10);
         data<<=;    //左移一位并赋值给data
         GPIO_SetBits(GPIOB, GPIO_Pin_5);    //PB5置1,为了产生上升沿
     }

     )
     {
         GPIO_SetBits(GPIOA, GPIO_Pin_3);
         Delay_MS();
         GPIO_ResetBits(GPIOA, GPIO_Pin_3);
         Delay_MS();
     }

 }

 /*******************************************************************************
 * Function Name  : Delay_Ms
 * Description    : delay 1 ms.
 * Input          : dly (ms)
 * Output         : None
 * Return         : None
 *******************************************************************************/
 void Delay_MS(u16 dly)
 {
     u16 i,j;
     ;i<dly;i++)
         ;j>;j--);
 }

 /*******************************************************************************
 * Function Name  : RCC_Configuration
 * Description    : Configures the different system clocks.
 * Input          : None
 * Output         : None
 * Return         : None
 *******************************************************************************/
 void RCC_Configuration(void)
 {
     //----------使用外部RC晶振-----------
     RCC_DeInit();            //初始化为缺省值
     RCC_HSEConfig(RCC_HSE_ON);    //使能外部的高速时钟
     while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);    //等待外部高速时钟使能就绪

     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);    //Enable Prefetch Buffer
     FLASH_SetLatency(FLASH_Latency_2);        //Flash 2 wait state

     RCC_HCLKConfig(RCC_SYSCLK_Div1);        //HCLK = SYSCLK
     RCC_PCLK2Config(RCC_HCLK_Div1);            //PCLK2 =  HCLK
     RCC_PCLK1Config(RCC_HCLK_Div2);            //PCLK1 = HCLK/2
     RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);    //PLLCLK = 8MHZ * 9 =72MHZ
     RCC_PLLCmd(ENABLE);            //Enable PLLCLK

     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);    //Wait till PLLCLK is ready
     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);    //Select PLL as system clock
     while(RCC_GetSYSCLKSource()!=0x08);        //Wait till PLL is used as system clock source

     //---------打开相应外设时钟--------------------
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);    //使能APB2外设的GPIOA的时钟
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);
 }

 /*******************************************************************************
 * Function Name  : GPIO_Configuration
 * Description    : 初始化GPIO外设
 * Input          : None
 * Output         : None
 * Return         : None
 *******************************************************************************/
 void GPIO_Configuration(void)
 {
     //CLK:PB5  CLR:PE11 DATA:PE10
     GPIO_InitTypeDef    GPIO_InitStructure;        //声明一个结构体变量
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;     //选择PB.5
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //管脚频率为50MHZ
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //输出模式为推挽输出
     GPIO_Init(GPIOB,&GPIO_InitStructure);                 //初始化GPIOB寄存器

     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 |GPIO_Pin_10 ;     //选择PE.10 PE.11
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //管脚频率为50MHZ
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //输出模式为推挽输出
     GPIO_Init(GPIOE,&GPIO_InitStructure);                 //初始化GPIOE寄存器

     //开启时钟    必须在RCC_Configuration中设置
 } 

stm32之GPIO库函数开发的更多相关文章

  1. STM32的GPIO使用的函数剖析

    转载http://blog.csdn.net/wuwuhuizheyisheng/article/details/8239599 STM32的GPIO总结 作者:JCY 该文是自己学习了一段STM32 ...

  2. STM32 串口功能 库函数 详解和DMA 串口高级运用(转载)

    数据传输时要从支持那些相关的标准?传输的速度?什么时候开始?什么时候结束?传输的内容?怎样防止通信出错?数据量大的时候怎么弄?硬件怎么连接出发,当然对于stm32还要熟悉库函数的功能 具起来rs232 ...

  3. STM32的GPIO口的输出开漏输出和推挽输出

    本文来自cairang45的博客,讲述了STM32的GPIO口的输出开漏输出和推挽输出, 作者博客:http://blog.ednchina.com/cairang45 本文来自: 高校自动化网(Ww ...

  4. stm32之GPIO(二)

    输入上拉:当IO口作为输入时,比如按键输入,而按键是与地连接,按下时为低电平,则没按下时该IO口应为高电平,上拉即是该IO口通过一个电阻与电源相连,则没按下时为高电平,按下即为低电平. 输入下拉:同理 ...

  5. STM32配置GPIO前须先打开其时钟,否则配置失败

    @2018-5-9 17:11:38 STM32配置GPIO前须先打开其时钟,否则配置失败

  6. STM32 F4 GPIO Modes

    STM32 F4 GPIO Modes Goal: creating a visual summary of GPIO configuration modes. The summary at the ...

  7. stm32 Flash读写[库函数]

    stm32 的内置可编程Flash在许多场合具有十分重要的意义.如其支持ICP特性使得开发人员对stm32可以警醒调试开发,可以通过JTAG和SWD接口对stm32进行程序烧写:支持IAP特性使得开发 ...

  8. STM32的GPIO工作原理 | 附电路图详细分析

    STM32的GPIO介绍 STM32引脚说明 GPIO是通用输入/输出端口的简称,是STM32可控制的引脚.GPIO的引脚与外部硬件设备连接,可实现与外部通讯.控制外部硬件或者采集外部硬件数据的功能. ...

  9. STM32库函数开发使用总结

    一.外设常具备的几类寄存器 控制寄存器xxx_CR (Control/Configuration Register): 用来配置.控制响应外设的工作方式,如GPIOx_CRL.AFIO_EXTICR1 ...

随机推荐

  1. 用jQuery判断一个元素的各种状态

    用jQuery判断一个元素是否显示   用jQuery判断一个元素是否显示:$(element).is(":visible"); 类似的,判断一个元素是不是第一个子元素:$(ele ...

  2. loadrunner通过字符串左右边界切割字符串

    void web_reg_save_param_custom(char *sourceStr, char* outpuStr, char *leftBdry, char *rightBdry){    ...

  3. jenkins2 hello pipeline

    文章来自:http://www.ciandcd.com 文中的代码来自可以从github下载: https://github.com/ciandcd   根据前面的2篇文章,我们已经安装和配置好了je ...

  4. android自定义View之钟表诞生记

    很多筒子觉得自定义View是高手的象征,其实不然.大家觉得自定义View难很多情况下可能是因为自定义View涉及到了太多的类和API,把人搞得晕乎乎的,那么今天我们就从最简单的绘图API开始,带大家来 ...

  5. 电子科大POJ &quot;a^b&quot;

    a ^ b Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) C-sources: ...

  6. SqlServer 技术点总结(持续更新)

    本文是用于记录自己平时遇到的一些SQL问题或知识点,以便以后自己查阅,会持续的更新,增加内容.发在博客园也可以和各位博友共同学习交流,如文中记录的有错误之处希望指出,谢谢. 一.用SQL语句调用作业 ...

  7. golang环境 centos 7

    https://blog.csdn.net/ggq89/article/details/82682171  Linux下Go的安装.配置 .升级和卸载 https://blog.csdn.net/we ...

  8. CSS导航条nav简单样式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. &lt;&lt;c专家编程&gt;&gt;笔记

    C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...

  10. C# p2p UDP穿越NAT,UDP打洞源码

    思路如下(参照源代码): 1. frmServer启动两个网络侦听,主连接侦听,协助打洞的侦听. 2. frmClientA和frmClientB分别与frmServer的主连接保持联系. 3. 当f ...