stm32学习之三

发布者:tgdddt最新更新时间:2016-10-05 来源: eefocus关键字:stm32  GPIO 手机看文章 扫描二维码
随时随地手机看文章
1、GPIO之LED灯的点亮程序:

      GPIO的功能是多样的,驱动LED灯,获得按键的输入信息……。

对于驱动LED灯,按照上面就需要对GPIO进行配置。

基本知识掌握:

2013年4月24日:
下午:
 stm32学习的原因:
  1、从内核上:一般人开始学习的时候,都是从arm7开始的,但是自从stm32开发板出现后,就发现了人们更多的在
 使用了stm32了。
  2、从用途上:stm32微控制器在工业控制上、消费电子、手持设备、汽车电子、安防监控等众多领域得到广泛的
 应用,而且其高性价比,适合手工DIY的优点。

arm7与stm32的比较:
 Cortext-32的速度比arm7块三分之一,功耗低四分之一,并且能够实现更小芯片面积,利于将更多功能整合在更小的
芯片尺寸中。cortex-m3处理器结合了执行Thumb-2指令的32为哈佛微体系结构和系统外设,包括Nested Vec-tored interrupt
Controller和Arbiter总线。、
 在工控领域,用户要求具有更快的中断速度,cortex-m3采用了Tail-Chaining中断技术,完全基于硬件进行中断处理,
最多可减少12个时钟周期数,在实际应用中可减少百分之七十的中断数目。

了解AVR:
 AVR可以说是一款很成功的一款芯片,功耗低,性能强。较之前的51,性能提高了好几个档次。AVR的外设很丰富,一般的
项目都能满足。
 但是自从STM32出现之后,AVR就"退出江湖了"。
 因为它跟stm32是没法比的。
 
  3、使用方便:
   1、支持串口下载
   2、所有的IO端口都可以产生中断
   3、技术资料多
   4、支持SWD下载
   5、复用IO口重映射功能
   
 注意:
  编译软件:
   1、MDK还是IAR?
    一般的都是使用的MDK
   2、固件库还是寄存器?
    一般的都要用,都要学。
   
  IAR占的编译代码速度,占的flash等等都是比MDK好,但是都不是很大。
  但是一般都不用IAR
  但是:
   keil(被ARM收购了):
    1、界面友好
    2、配置简单
    3、操作简单  
    
stm32最小系统(能使单片机工作的系统):
 1、电源
 2、复位
 3、时钟
 4、下载电路(很多人都认为这个不属于最小系统,但是完整的还是加上的)
 
 主要是注意一个是时钟。
 注意时钟的分配,来源,几路走出等。
 

 
1、系统时钟的初始化函数。
2、延时函数的实现。
  软件延时是比较简单的方法,它利用CPU执行一循环语句来产生延时的效果。
  对于stm32来说,执行一条指令只有几十个ns,进行for循环,要实现N毫秒的x值非常大,而且由于系统的频率的
 宽广,很难计算出延时N毫秒的精确值。
  软件延时不占用定时器资源,但占用CPU资源,它的延时精度不高,适合应用在对延时精度不高的场合。
  
 十分要注意的是:

      GPIO的配置,很重要的一方面就是时钟的给予,没有时钟,就算一切都配置好了,也是徒劳的。

 

程序:

      LED的头文件的相关信息:

      #ifndef _LED_H
#define _LED_H
#include "stm32f10x.h"

#define ON 1
#define OFF 0

#define LED1(a) if (a)\
 GPIO_ResetBits(GPIOC,GPIO_Pin_3);\
 else\
 GPIO_SetBits(GPIOC,GPIO_Pin_3)
#define LED2(a) if (a)\
 GPIO_ResetBits(GPIOC,GPIO_Pin_4);\
 else\
 GPIO_SetBits(GPIOC,GPIO_Pin_4)
#define LED3(a) if (a)\
 GPIO_ResetBits(GPIOC,GPIO_Pin_5);\
 else\
 GPIO_SetBits(GPIOC,GPIO_Pin_5)
void LED_GPIO_Config(void);


#endif
这里有一个很重要的define,对于这次的程序来说,是非常小的,用到的不多的话,一般不用这样定义的。但同时也要看到这个程序的定义

的技巧性。

 

然后写上led.c的相关GPIO配置信息,

#include "led.h"
void LED_GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
 
 GPIO_Init(GPIOC,&GPIO_InitStructure);

 GPIO_SetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5); 
}
再个就是主程序的调用问题:

/******************** (C) COPYRIGHT 2013**************************
 * 文件名  :main.c
 * 描述    :用3.5.0版本建的工程模板。         
 * 实验平台:野火STM32开发板 应该是STM32F103VET6
 * 库版本  :ST3.5.0
 *
 * 作者    :wit_yuan 
 * 版本    : v1.0
 * 时间    : 2013年4月27日
**********************************************************************************/
#include "stm32f10x.h"
#include "led.h"
void delay(__IO uint32_t time);
/* 
 * 函数名:main
 * 描述  : 主函数
 * 输入  :无
 * 输出  : 无
 */
int main(void)
{
 LED_GPIO_Config();
 LED1(ON); 
 delay(0x0FFFFFFF);
 LED1(OFF);
}
void delay(__IO uint32_t time)
{
  for(;time>0;time--);
}

需要注意的是,时钟给予的是72MHZ,那么这个程序延时的话,应该是30多秒。结果证明也是差不多时间。


注意:

     由于用到了时钟的相关配置,因此需要加上头文件的。

     #include "stm32f10x_rcc.h"

关键字:stm32  GPIO 引用地址:stm32学习之三

上一篇:stm32学习之四
下一篇:基于STM32的PWM输出

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

stm32 蜂鸣器
蜂鸣器分为两种型号:有源蜂鸣器和无源蜂鸣器 区别:有源的只用提供一个驱动电压就可以工作,但是无源的蜂鸣器需要提供规定赫兹的脉冲信号才能发出声音,声音的大小可以根据占空比进行调节。 #include system.h /*蜂鸣器时钟端口、引脚定义*/ #define BEEP_PORT GPIOB #define BEEP_PIN GPIO_Pin_5 #define BEEP_PORT_RCC RCC_APB2Periph_GPIOB #define beepPBout(5) void BEEP_Init(void); #endif void BEEP_Init() //端口初始化 { GPIO_InitT
[单片机]
STM32 SPI接口读写SPI flash实验
STM32 SPI flash读写测试实验报告 一、实验目的 1.学习SPI的基本工作原理 2.通过实验加深对STM32SPI的理解 3. 利用STM32的SPI11和SPI接口的flash芯片进行通信,读写测试,并将测试结果用串口打印出来 二、实验原理 1.SPI基础知识 SPI特征 ● 3线全双工同步传输 ● 带或不带第三根双向数据线的双线单工同步传输 ● 8或16位传输帧格式选择 ● 主或从操作 ● 支持多主模式 ● 8个主模式波特率预分频系数(最大为fPCLK/2) ● 从模式频率(最大为fPCLK/2) ● 主模式和从模式的快速通信 ● 主模式和从模式下均可以由软件或硬件进行NSS管理:主/从操作模式的动态改变 ● 可编
[单片机]
<font color='red'>STM32</font> SPI接口读写SPI flash实验
STM32 USB 之从0开始移植笔记
-----------------------------------动机----------------------------------- 写在前面的话:最近逛淘宝无意间发现RC522居然只要10元左右就可以包邮买到,真是太便宜了,就忍不住买了个回来玩玩。到货移植到我的板子上OK 后突然发现我的USB口紧张了,一个用来给板子供电一个插jlink 一个插入usb转串口给RC522下命令。就想着将板子供电和RC522传输用一个USB接口来实现。这就是这次折腾USB的来由~-~ ----------------------------------开始折腾USB----------------------------- 首
[单片机]
<font color='red'>STM32</font> USB 之从0开始移植笔记
STM32之独立看门狗的那些事
为什么MCU会具有看门狗呢?带着这个疑问,来了解看门狗的那些事。就连51单片机都带有看门狗,说明这条狗对我们来说有着 不一般的意义。看门狗的目的一句话说:防止程序乱跑。MCU在不同的环境下程序的运行会受到干扰,比如陷入死循环怎么办? 这就是养狗的好处呀,就算你没养过狗,你也看过猪跑吧。 先看固件库的几个函数 void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess); void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); void IWDG_SetReload(uint16_t Reload); void IWDG_ReloadCounter(
[单片机]
STM32硬件i2c的EV卡死问题的终极解决(已通过老化测试40h)
鉴于各位对于stm32的硬件i2c均存在质疑且在此处下载的所有硬件i2c程序均基于一个模板 大家对于硬件i2c的说法均在初始化上而对于发送接收程序并没有多少改动 所以我个人对这一段进行了优化,加上了超时自动跳出和标志位的动作,完美解决了硬件i2c的卡死问题 这里就是一个初始化的程序,应注意,clockspeed不应该高于100k 这是一个初始化的顺序,应注意,i2c的初始化应在RCC和GPIO之后进行 上面这一段就是新增的程序模块,为的是对于易卡死的while循环做出限制,防止死循环。 只需将已有的程序中所有的关于硬件i2c的while循环均加上这一条就可以使用了。 此处如果在I2C1_hardware_wait_ci
[单片机]
<font color='red'>STM32</font>硬件i2c的EV卡死问题的终极解决(已通过老化测试40h)
STM32再学习——实时时钟(RTC)
RTC,是RealTimeCounter的缩写。在MCU中,其实是一组连续计数的计数器,各个产品及系列各不相同。因此,在相应的软件配置下,可提供时钟日历的功能。当然,修改这个计数器的值也就重新设置了系统当前的时间和日期。 本文引用地址:http://www.eepw.com.cn/article/182407.htm RTC只是一个时钟,但与RTC相连的有两个系统时钟,一个是APB1接口的PCLK1另一个是RTC时钟 。这样,RTC功能也就分为两个部分:第一部分,APB1接口部分,与APB1总线相连,MCU也就是通过这条总线对其进行读写操作。另一部,RTC核,由一系列可编程计数器组成,这部分又再细分为两个组件:预分频模块与
[单片机]
<font color='red'>STM32</font>再学习——实时时钟(RTC)
采用STM32的心电采集系统电路设计
心血管类疾病已经成为威胁人类身体健康的重要疾病之一,而清晰有效的心电图为诊断这类疾病提供了依据,心电采集电路是心电采集仪的 关键部分,心电信号属于微弱信号,其频率范围在0.03~100 Hz之间,幅度在0~5 mV之间,同时心电信号还掺杂有大量的干扰信号,因此,设计良好的滤波电路和选择合适的控制器是得到有效心电信号的关键。基于此,本文设计了以STM32 为控制核心,AD620和OP07为模拟前端的心电采集仪,本设计简单实用,噪声干扰得到了有效抑制。 主控模块电路设计 主控模块的STM32F103VET单片机是控制器的核心,该单片机是ST意法半导体公司生产的32位高性能、低成本和低功耗的增强型单片机,其内核采用 ARM公司最
[单片机]
采用<font color='red'>STM32</font>的心电采集系统电路设计
SD NAND在STM32应用上的保姆级教程
SD NAND与正点原子精英板的连接 由于正点原子精英板没有SD NAND接口,只有TF卡接口,所以SD NAND需要用到转接板来连接。 SD NAND正常运行现象 本次实验的程序是正点原子的SD卡实验例程,先用读卡器把SD NAND接到电脑上,并复制一个文件进去,再插到开发板上; 用送的数据线连接USB UART接口,下载好程序,打开电脑上的串口助手,按下KEY0,即可读取到数据, 具体实验步骤和现象可以看例程文件夹中的readme, 另外LED-DS0闪烁也表示SD NAND芯片在正常运行, SD NAND芯片用的是MK-米客方德的工业级芯片MKDV1GIL-AS;MK-米客方德家还有其他各种型号的SD NAN
[单片机]
SD NAND在<font color='red'>STM32</font>应用上的保姆级教程
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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