8077|3

18

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

刚接触STM32,谁能帮我用SYStick做一个 持续一秒进入一次中断的定时器 [复制链接]

如题,谢谢
此帖出自stm32/stm8论坛

最新回复

这样应该差不多了吧  详情 回复 发表于 2012-7-16 22:16
点赞 关注
 

回复
举报

177

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
#include "stm32f10x.h"
//#include"stm32f10x_gpio.h"
#define RCC_GPIO_LED                                 RCC_APB2Periph_GPIOF
#define GPIO_LED_PORT                                GPIOF   
#define GPIO_LED1                                    GPIO_Pin_6   
#define GPIO_LED2                                    GPIO_Pin_7   
#define GPIO_LED3                                    GPIO_Pin_8   
#define GPIO_LED4                                    GPIO_Pin_9
#define GPIO_LED_ALL                                 GPIO_LED1 |GPIO_LED2 |GPIO_LED3 |GPIO_LED4

void LED_config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  /* Enable GPIOB, GPIOC and AFIO clock */
  RCC_APB2PeriphClockCmd(RCC_GPIO_LED | RCC_APB2Periph_AFIO , ENABLE);  //RCC_APB2Periph_AFIO
  
  /* LEDs pins configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_LED_ALL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIO_LED_PORT, &GPIO_InitStructure);
}
void Led_Turn_off_all(u8 n)
{
        switch(n)
   {
        case 0:
        GPIO_SetBits(GPIOF,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_6);
        break;
        case 1:
        GPIO_SetBits(GPIOF,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_7);
        break;
        case 2:
        GPIO_SetBits(GPIOF,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_8);
        break;
        case 3:
        GPIO_SetBits(GPIOF,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);
        break;
        }
}
void Led_Turn_on_all(u8 n)
{
   switch(n)
   {
   case 0:
   GPIO_ResetBits(GPIOF,GPIO_Pin_6);
   break;
   case 1:
   GPIO_ResetBits(GPIOF,GPIO_Pin_7);
   break;
   case 2:
   GPIO_ResetBits(GPIOF,GPIO_Pin_8);
   break;
   case 3:
   GPIO_ResetBits(GPIOF,GPIO_Pin_9);
   break;
   }
}

void LED_Spark(void)                                          
{
  static __IO uint32_t TimingDelayLocal = 0;
  static __IO u8 n = 0;

  if (TimingDelayLocal != 0x00)         //如果不为0
  {
    if(TimingDelayLocal < 50)  // 后50次熄灭LED指示灯
    {
      Led_Turn_off_all(n);
    }
    else                      // 前50次点亮LED指示灯
    {
      Led_Turn_on_all(n);
    }
    TimingDelayLocal--; // 该函数每一次被调用静态本地变量TimingDelayLocal便会减一
       
  }
  else
  {
    TimingDelayLocal = 100;
        n++;
          if (n>3) n=0;
  }
   

}
/*******************************************************************************
* 函数名                  : SysTick_Configuration
* 功能                    : 配置SysTick 时基
* 输入          : 无
* 输出          : 无
* 返回          : 无
*******************************************************************************/
void SysTick_Configuration(void)
{
  /* Setup SysTick Timer for 10 msec interrupts  */
  //时间计算就是 SystemCoreClock/(SystemCoreClock/50)
  if (SysTick_Config(SystemCoreClock / 100)) //SysTick配置函数,传递的参数是初值          1/100S
  {
    /* Vector error */
    while (1);
  }  
/* Configure the SysTick handler priority */
  NVIC_SetPriority(SysTick_IRQn, 0x0);//SysTick中断优先级设置
}
void InterruptConfig(void)
{   
  /* Set the Vector Table base address at 0x08000000 */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00000);
}
int main(void)
{
  LED_config();              //LED使用的GPIO初始化
  Led_Turn_on_all(4);         //点亮所有的LED灯

  SysTick_Configuration();     //SysTick中断配置
  
  /*主循环 */
  while (1)
  {
      ;
  }   
}
此帖出自stm32/stm8论坛
 
个人签名到底是学习ARM7还是学习STM32,纠结中,求指导。
 

回复

177

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
#include "stm32f10x_it.h"
extern void LED_Spark(void);
void SysTick_Handler(void)
{
   LED_Spark();//LED 启动函数,在中断里自己加的
}
此帖出自stm32/stm8论坛
 
个人签名到底是学习ARM7还是学习STM32,纠结中,求指导。
 

回复

177

帖子

0

TA的资源

五彩晶圆(初级)

4
 
这样应该差不多了吧
此帖出自stm32/stm8论坛
 
个人签名到底是学习ARM7还是学习STM32,纠结中,求指导。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表