STM32-学习经验总结 ———stm32-从点灯开始
2016-01-19 16:42
387 查看
STM32———-从点灯开始
首先来看看最简单的点亮一个灯的实验你把,实验要求点亮一个灯并隔段时间熄灭,如此一直循环:
其实实现点亮一个灯和学习51单片机时是一样的,都是把某个管脚置高电平或置低电平,只不过过程有些不一样,它把好多函数放在了库里,我们只需调用那些函数,再进行设置就可以。
程序的思路如下:
1、首先需要设置的是时钟:你将灯的管脚连在哪个端口的某个引脚上面,你就开启哪个端口的时钟,比如灯连在A端口的某个引脚,就要开启A端口的时钟。
2、其次,设置管脚: 我们需要对GPIO进行初始化设置,我们只需调用 GPIO_InitTypeDef的结构体,对每个成员进行设置,要设置的有PIN管脚的位置GPIO_Pin,还有管脚的速率GPIO_Speed,还有管脚的工作状态GPIO_Mode,最后在调用一下初始化的函数GPIO_Init,
3、然后就开始写我们的主函数:假如我想让led灯的管脚置为高电平,我只需调用GPIO_SetBits函数,它是将管脚置为高电平,若想置为低电平则调用GPIO_ResetBits函数就可以。
4、最后我们要让它一闪一灭循环当然需要延时,所以我们还需写一个延时函数,这个和51单片机一样就不用多说了,如果仅仅让一个灯亮,就不需要延时了。
上面所提到的函数里面的参数设置请参考STM32固件库手册。
STM32固件库手册
下面举个例子:
要求led灯管脚在PA.1管脚上,实现一闪一灭。
好了,已经OK了,下面就可以将程序下载到开发板上面去试了,就到这里吧。
在假期也是很无聊,反正闲着就来写写上学期学的STM32,就当是复习复习吧,其实我也是新手,刚开始自学,可能写的内容里面会出现一些错误,还请看到的朋友及时指出来。
首先来看看最简单的点亮一个灯的实验你把,实验要求点亮一个灯并隔段时间熄灭,如此一直循环:
其实实现点亮一个灯和学习51单片机时是一样的,都是把某个管脚置高电平或置低电平,只不过过程有些不一样,它把好多函数放在了库里,我们只需调用那些函数,再进行设置就可以。
程序的思路如下:
1、首先需要设置的是时钟:你将灯的管脚连在哪个端口的某个引脚上面,你就开启哪个端口的时钟,比如灯连在A端口的某个引脚,就要开启A端口的时钟。
2、其次,设置管脚: 我们需要对GPIO进行初始化设置,我们只需调用 GPIO_InitTypeDef的结构体,对每个成员进行设置,要设置的有PIN管脚的位置GPIO_Pin,还有管脚的速率GPIO_Speed,还有管脚的工作状态GPIO_Mode,最后在调用一下初始化的函数GPIO_Init,
3、然后就开始写我们的主函数:假如我想让led灯的管脚置为高电平,我只需调用GPIO_SetBits函数,它是将管脚置为高电平,若想置为低电平则调用GPIO_ResetBits函数就可以。
4、最后我们要让它一闪一灭循环当然需要延时,所以我们还需写一个延时函数,这个和51单片机一样就不用多说了,如果仅仅让一个灯亮,就不需要延时了。
上面所提到的函数里面的参数设置请参考STM32固件库手册。
STM32固件库手册
下面举个例子:
要求led灯管脚在PA.1管脚上,实现一闪一灭。
#include "stm32f10x_lib.h"//头文件 void LED_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开 GPIOA 时钟 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//设置led灯连在第二个管脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO的工作状态为推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // GPIO的速率最高输出速率 50Hz GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA } void Delay(vu32 nCount) //延时函数,不解释 { for(; nCount != 0; nCount--); } main() { LED_Init(); while(1) { GPIO_SetBits(GPIOA, GPIO_Pin_1);//将 GPIO的A端口第二个管脚置为高电平,即PA.1=1; Delay(0x8ffff); GPIO_ResetBits(GPIOA, GPIO_Pin_1);//将 GPIO的 A端口第二个管脚置为低电平,即PA.1=0; Delay(0x8ffff); } }
好了,已经OK了,下面就可以将程序下载到开发板上面去试了,就到这里吧。
相关文章推荐
- 从源码安装Mysql/Percona 5.5
- 浅析Ruby的源代码布局及其编程风格
- asp.net 抓取网页源码三种实现方法
- JS小游戏之仙剑翻牌源码详解
- JS小游戏之宇宙战机源码详解
- jQuery源码分析之jQuery中的循环技巧详解
- 本人自用的global.js库源码分享
- java中原码、反码与补码的问题分析
- PHP网页游戏学习之Xnova(ogame)源码解读(六)
- C#获取网页HTML源码实例
- PHP网页游戏学习之Xnova(ogame)源码解读(八)
- PHP网页游戏学习之Xnova(ogame)源码解读(四)
- JS小游戏之极速快跑源码详解
- JS小游戏之象棋暗棋源码详解
- android源码探索之定制android关机界面的方法
- 基于Android设计模式之--SDK源码之策略模式的详解
- Android游戏源码分享之2048
- C语言借助EasyX实现的生命游戏源码
- C实现的非阻塞方式命令行端口扫描器源码
- PHP网页游戏学习之Xnova(ogame)源码解读(七)