您的位置:首页 > 其它

STM32-学习经验总结 ———stm32-从点灯开始

2016-01-19 16:42 381 查看
STM32———-从点灯开始

在假期也是很无聊,反正闲着就来写写上学期学的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了,下面就可以将程序下载到开发板上面去试了,就到这里吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32 源码