关于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. R中的&lt;-和=赋值符号的细致区别

    <-创建的变量的作用范围可以在整个顶层环境,而=仅仅在一个局部环境. 但要<-创建的变量如果是在函数实参传递的时候创建的,其的作用范围可以在整个顶层环境,有一个前提条件:对应的形参在函数内 ...

  2. 【LeetCode】Sum of Two Integers

    问题描述: Calculate the sum of two integers a and b, but you are not allowed to use the operator + and - ...

  3. Linux使用常见错误集锦

    1. scp拷贝文件失败问题 当在 shell startup script (比如 profile , bashrc)自动执行过程中产生了任何内容输出时, scp / sftp会把这些 echo 回 ...

  4. BZOJ 3477: [Usaco2014 Mar]Sabotage( 二分答案 )

    先二分答案m, 然后对于原序列 A[i] = A[i] - m,  然后O(n)找最大连续子序列和, 那么此时序列由 L + mx + R组成. L + mx + R = sum - n * m, s ...

  5. Android使用 startActivityForResult 、 onActivityResult 时的注意事项

    今天使用 startActivityForResult 时遇到两个问题,应该是常见问题了吧,浪费了些时间才搞定,做个记录. 1. onActivityResult 的触发顺序问题 这个问题很郁闷,我一 ...

  6. Ionic3 遇到的一些错误-submodule update -q --init --recursive

    解决方法: ionic start myTabs tabs --skip-deps cd .\myTabs cnpm install --save-dev ionic serve > npm i ...

  7. [图解Java]ReentrantLock重入锁

    图解ReentrantLock 0. demo 我先给出一个demo, 这样大家就可以根据我给的这段代码, 边调试边看源码了. 还是那句话: 注意"My" , 我把Reentran ...

  8. VS 2015 GIT操作使用说明

    相比VS2013,VS2015在对GIT的支持上有了更强大的支持.本篇仅作抛砖引玉,不做过多介绍: 1. 打开VS 2015起始页 2. 打开团队资源管理器 打开[本地GIT存储库]选项卡,然后点击[ ...

  9. IKanalyzer分词器分词并且统计词频

    <dependency> <groupId>com.janeluo</groupId> <artifactId>ikanalyzer</artif ...

  10. elasticsearch最大的条件数设置

    elasticsearch  bool条件查询里面条件的数量是有限制的,比如terms里面相等的值的数量个数 添加: indices.query.bool.max_clause_count: 1000 ...