STM32F4的IO设置测试

发布者:SparklingBeauty最新更新时间:2016-12-18 来源: eefocus关键字:STM32F4  IO设置 手机看文章 扫描二维码
随时随地手机看文章

环境:

主机:WIN7

开发环境:MDK4.72

MCU:STM32F407VGT6


说明:

目标板上有一个LED,有一个按键,按键实现LED状态翻转.


LED:PE2,低电平亮,高电平灯灭

按键:PC13,低电平按下,高电平松开


源代码:

main.c


  1. /********************************************************************* 

  2. *                             主文件 

  3. *                       (c)copyright 2014,jdh 

  4. *                         All Right Reserved 

  5. *新建日期:2014/3/25 by jdh 

  6. **********************************************************************/  

  7.   

  8. /********************************************************************* 

  9. *                           头文件 

  10. **********************************************************************/  

  11.   

  12. #include "main.h"  

  13. #include "stm32f4xx_rcc.h"  

  14. #include "stm32f4xx_gpio.h"  

  15.   

  16. /********************************************************************* 

  17. *                           全局变量 

  18. **********************************************************************/  

  19.   

  20. static __IO uint32_t TimingDelay;  

  21.   

  22. /********************************************************************* 

  23. *                           函数定义 

  24. **********************************************************************/  

  25.   

  26. void Delay(__IO uint32_t nTime);  

  27.   

  28.   

  29. /********************************************************************* 

  30. *                           函数 

  31. **********************************************************************/  

  32.   

  33. int main(void)  

  34. {  

  35.     //定义IO初始化结构体  

  36.     GPIO_InitTypeDef GPIO_InitStructure;  

  37.       

  38.     //系统时钟:1ms滴答1次  

  39.     if (SysTick_Config(SystemCoreClock / 1000))  

  40.     {   

  41.         while (1);  

  42.     }  

  43.     

  44.     //设置LED的IO口  

  45.     //初始化时钟  

  46.     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);  

  47.     //管脚模式:输出口  

  48.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;     

  49.     //类型:推挽模式  

  50.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;    

  51.     //上拉下拉设置:不使能  

  52.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;      

  53.     //IO口速度  

  54.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  

  55.     //管脚指定  

  56.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;  

  57.     //初始化  

  58.     GPIO_Init(GPIOE, &GPIO_InitStructure);  

  59.       

  60.     //设置按键的IO口  

  61.     //初始化时钟  

  62.     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);  

  63.     //管脚模式:输出口  

  64.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;      

  65.     //类型:推挽模式  

  66.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;    

  67.     //上拉下拉设置:不使能  

  68.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;      

  69.     //IO口速度  

  70.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  

  71.     //管脚指定  

  72.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;  

  73.     //初始化  

  74.     GPIO_Init(GPIOC, &GPIO_InitStructure);  

  75.   

  76.     while (1)  

  77.     {  

  78.         //GPIO_SetBits(GPIOE,GPIO_Pin_2);  

  79.         //Delay(500);  

  80.         //GPIO_ResetBits(GPIOE,GPIO_Pin_2);  

  81.         //Delay(500);  

  82.         //按键检测  

  83.         if (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13) == 0)  

  84.         {  

  85.             GPIO_ToggleBits(GPIOE,GPIO_Pin_2);  

  86.             Delay(500);  

  87.         }  

  88.     }  

  89. }  

  90.   

  91. /** 

  92.   * @brief  Inserts a delay time. 

  93.   * @param  nTime: specifies the delay time length, in milliseconds. 

  94.   * @retval None 

  95.   */  

  96. void Delay(__IO uint32_t nTime)  

  97. {   

  98.   TimingDelay = nTime;  

  99.   

  100.   while(TimingDelay != 0);  

  101. }  

  102.   

  103. /** 

  104.   * @brief  Decrements the TimingDelay variable. 

  105.   * @param  None 

  106.   * @retval None 

  107.   */  

  108. void TimingDelay_Decrement(void)  

  109. {  

  110.   if (TimingDelay != 0x00)  

  111.   {   

  112.     TimingDelay--;  

  113.   }  

  114. }  

  115.   

  116. #ifdef  USE_FULL_ASSERT  

  117.   

  118. /** 

  119.   * @brief  Reports the name of the source file and the source line number 

  120.   *         where the assert_param error has occurred. 

  121.   * @param  file: pointer to the source file name 

  122.   * @param  line: assert_param error line source number 

  123.   * @retval None 

  124.   */  

  125. void assert_failed(uint8_t* file, uint32_t line)  

  126. {   

  127.   /* User can add his own implementation to report the file name and line number, 

  128.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  

  129.   

  130.   /* Infinite loop */  

  131.   while (1)  

  132.   {  

  133.   }  

  134. }  

  135. #endif  

  136.   

  137. /** 

  138.   * @} 

  139.   */   

  140.   

  141. /** 

  142.   * @} 

  143.   */   

  144.   

  145. /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/  




关键字:STM32F4  IO设置 引用地址:STM32F4的IO设置测试

上一篇:STM32F103停机模式测试
下一篇:w5100实现dns解析功能

推荐阅读最新更新时间:2024-03-16 15:26

STM32F407ZGT6实现输入捕获RX1002八路PWM信号
1. 首先介绍接收机的PWM输出类型。 通过示波器测量,可以知道: 1. 华科尔1002接收机的输出为PWM波,每个通道周期为22ms,高电平为3.3V。其中高电平的us数表示了该通道当前的舵量。比如说:当前俯仰通道默认中值为1500,该通道输出的PWM波的高电平即为1500us。 2. PWM转PPM的输出为PPM编码模式。其中高电平为5V左右(可能会有5.8V),具体的信号模式看PPM的编码介绍。在每个PPM帧之间有大于5ms的低电平时间表示帧的开始和结束。 具体如图所示: 图1 这是某通道输出舵量为1500时的PWM波形 图2 PPM波形图 2.输入捕获测试。 (1)先测试前四个通道的高电平捕获
[单片机]
<font color='red'>STM32F4</font>07ZGT6实现输入捕获RX1002八路PWM信号
STM32F407玩控制—史密斯预估补偿控制
史密斯预估补偿控制的原理如图1所示,图1中传递函数Ksgs(s)称为预估补偿器(这个图来自网络,文献可以看金以慧《过程控制》),从原理上说,要使Ksgs(s)=Kpgp(s)(1-exp(-τd*s)),这样闭环传递函数G(s)=KpGc(s)gp(s)exp(-τd*s)/(1+KpGc(s)gp(s)),这时,特征方程中不再包含延滞项,也就是说,控制系统的调节品质不再受到时间延滞的影响,当然,这是理论上的,实际上,我们无法正确辨识出过程对象的数学模型Kpgp(s)exp(-τd*s),况且,过程对象可能是非线性的或者是时变的,例如,随着设备的老化,过程对象模型无可避免的会发生变化,在蒸汽加热系统中,疏水器性能的变差,就会导致过
[单片机]
用<font color='red'>STM32F4</font>07玩控制—史密斯预估补偿控制
一个关于使用STM32F4芯片CCM RAM时的异常分析
前言 有客户用STM32F427 芯片 ,程序将CSTACK放在CCM RAM中,结果测试过一段时间的板子都出现了不能正常运行的情况。这个现象一度让我们怀疑是否是CCM RAM在测试过程中遭到了破坏,导致我们在解决问题的道路上浪费了不少时间。 事实证明STM32的CCM RAM并没有那么脆弱,而解决问题时尽力从多个角度进行验证,不放过所有可能出问题的环节之心态更为重要。 在具体讨论问题的原因之前,不妨先介绍一下STM32F4/STM32F3系列芯片上的CCM RAM。 CCM RAM介绍 ST的STM32F303, STM32F358, STM32F328, STM32F334系列和STM32F4的Advanced line系列
[单片机]
STM32F4串口DMA配置
在使用串口时,一般采用查询发送,中断接收。但当要接收一串很长的数据时,每收到一个字节进入一次串口中断,有可能会导致中断占用时间过长。如果有一种方式,能够让串口收完一串数据,才进一次中断,那将是对写底层驱动的人来说,是极其好的一件事。经过查资料看手册,发现可以采用串口空闲中断和DMA接收来实现这个功能。具体更详细的说明后续补充,现只贴出代码,以供参考。 调试的过程中发现几个问题: 1、要串口初始化放在DMA初始化之前,否则会出现DMA发送和接收使用不了的问题; 2、DMA接收配置中DMA模式要配置为循环模式,如果配置成为正常模式会导致只能接收到一次数据,问题未知; 如果有某位大神知道这两个问题的原因,望不吝赐教。 画布多
[单片机]
CubeMX Stm32F407 生成一定周期的占空比不同的方波 DMA + 定时器
先上图 如图 是我生成的一个波形 这个波形的占空比在连续的四个周期内分别是10%,20%,30%,40%, 并且按照这个顺序循环这里大致介绍一下实现的方式。 使用的软件是Cubemx(库函肯定也可以实现) 第一步是器件选型 这一部分不做介绍 用的是Stm32F407 第二是时钟配置 接下来是定时器配置 第三步就是生成代码了 这里 需要在生成的代码里面加上一行开始的代码。
[单片机]
CubeMX <font color='red'>Stm32F4</font>07 生成一定周期的占空比不同的方波 DMA + 定时器
STM32F407ZET6 用串口通过键盘控制LED灯的亮灭
1、串口定义 串口通信是一种设备间非常常用串行通信(数据交互)方式,因为它比较简单便捷,大部分电子设备支持串口通信方式,电子工工程师调试设备时常用的接口 串行通信:占用I/O较少,速度上较慢点 并行通信:占用I/O较多,速度上快速 2、常见通信方式 1) 单工 单工通信数据只能往一个方向发向(收音机) 2) 半双工 同一时间内只能传输或者发送数据(呼叫机) 3) 全双工(串口) 同一时间内数据可以发送及接收(电话机) 3、使用串口通信配置库函数流程 1) 串口时钟使能,GPIO 时钟使能。 2) 设置引脚复用器映射:调用 GPIO_PinAFConfig 函数。 3) GPIO 初始化设置:
[单片机]
<font color='red'>STM32F4</font>07ZET6 用串口通过键盘控制LED灯的亮灭
STM32F4 开发笔记2: IO输出的设置
本文介绍STM32F407IO输出功能的设置方法。 例:使用STM32F407的F9接L2,F10接L3,如下图所示: 设置步骤如下: 1、打开hal.h文件,更改一下内容,注意HAL_Init函数的声明是已经存在的,不需要更改,我们只需要加入L2和L3的宏定义,以及L2和L3打开与关闭的功能宏就可以了,这部分按照原理图生成,应该没有什么不好理解的。GPIO_SetBits是ST官方提供的置位函数,GPIO_ResetBits是ST官方提供的清零函数,在这里进行了直接调用。 2、打开hal.c文件,修改HAL_Init函数,修改后的函数内容如下: 3、RCC_AHB1Per
[单片机]
<font color='red'>STM32F4</font> 开发笔记2: <font color='red'>IO</font>输出的<font color='red'>设置</font>
STM32F407高速USB口速度测试
STM32F407高速USB口速度测试 1, 高速USB口,直接接USB3.0 U盘,金士顿DataTraveler G4,16G。读写文件长度3226157571字节。XP32系统。固件使用HS Device下的DualCore。 l 文件拷贝到U盘,用时3分钟。平均速度17.9MB/s=143Mbit/s l 从U盘拷出,用时2分钟。平均速度26.9MB/s=215Mbit/s l 文件从C盘拷贝,粘贴,用时2分钟。 可以看出,此时读写U盘已经是最大速度,这跟整个系统、U盘都有关系。USB操作应该没有经过MCU处理,直接用的USB缓冲区。 2, 高速USB口,连SD卡(大卡)
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved