您的位置 首页 FPGA

stm32学习之四

systick(滴答定时器):系统的滴答定时器可以测试的例子是,将开发板上的LED等轮流点亮即可(我选择的是1s轮流点亮三个LED等)。首先,系统滴答…

systick(滴答定时器):

体系的滴答定时器能够测验的比如是,将开发板上的LED等轮番点亮即可(我挑选的是1s轮番点亮三个LED等)。
首要,体系滴答定时器的特点是,设置敞开定时器的话,会主动计数,这个时分,计数到0的时分,会触发中止。
能够设置一个静态的变量,大局进行计数,然后延时。

进程:
1、树立一个SysTick.h文件,代码如下:
#ifndef _SYSTICK_H
#define _SYSTICK_H

#include “stm32f10x.h”
void SysTick_Init(void);

//void timeDecrement(void);

void delay(__IO uint32_t count);

#endif
2、树立一个SysTick.c文件,代码如下:
#include “SysTick.h”
static __IO uint32_t timeCount;

void SysTick_Init(void)
{
if(SysTick_Config(SystemCoreClock/1000))//装备1ms的中止
{
while(1);
}
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}

void delay(__IO uint32_t count)
{
timeCount = count;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
while(timeCount!=0);
}

void timeDecrement(void)
{
if(timeCount!=0x00)
{
timeCount–;
}
}

3、中止发生后,会履行stm32f10x_it.c文件:
会主动履行这个函数:
SysTick_Handler()
那么在函数内部进行处理函数:
void SysTick_Handler(void)
{
timeDecrement();
}

4、LED的操作不变:
led.c文件:
#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);
}
led.h文件:
#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

主函数如下:
/******************** (C) COPYRIGHT 2013**************************
* 文件名 :main.c
* 描绘 :用3.5.0版别建的工程模板。
* 试验渠道:野火STM32开发板
* 库版别 :ST3.5.0
*
* 作者 :wit_yuan
* 版别 : v1.0
* 时刻 : 2013年4月27日
**********************************************************************************/
#include “stm32f10x.h”
#include “led.h”
#include “SysTick.h”

/*
* 函数名:main
* 描绘 : 主函数
* 输入 :无
* 输出 : 无
*/
int main(void)
{
LED_GPIO_Config();
SysTick_Init();
while(1)
{
LED1(ON);
delay(1000);
LED1(OFF);
delay(1000);
LED2(ON);
delay(1000);
LED2(OFF);
delay(1000);
LED3(ON);
delay(1000);
LED3(OFF);
delay(1000);

}

}

整个试验进程结束。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/252309.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部