野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11999|回复: 6

F1定时器不工作,,程序好像也看不出什么问题,请各为帮忙看看,谢谢!

[复制链接]
发表于 2019-3-1 13:35:11 | 显示全部楼层 |阅读模式
#include "stm32f10x.h"

#define digitalToggle(p,i)          {p->ODR ^= i;}
#define led_Toggle                  digitalToggle(GPIOC,GPIO_Pin_13)                 

uint32_t  time = 0;

void LED_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
               
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
       
        GPIO_Init(GPIOC, &GPIO_InitStructure);
       
        GPIO_SetBits(GPIOC,GPIO_Pin_13 );
}

void NVIC_Config(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);  //?D??×é?a0
       
        NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;  //?D???'
                       
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;  //?à??ó??è??
       
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;  //?ìó|ó??è??
       
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;  //ê1?ü?D??
       
        NVIC_Init(&NVIC_InitStructure);  //3?ê??ˉ?D??                                       
}

void Timer_Config(void)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);  //?¨ê±?÷ê±?ó
       
        TIM_TimeBaseStructure.TIM_Period=999;//??×°???ü?ú
       
        TIM_TimeBaseStructure.TIM_Prescaler=71;  //ó?·??μ±è
       
        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;   //ê±?ó·??μòò×ó
       
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //?òé???êy?÷??ê?
                       
        TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
       
        TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);   //3?ê??ˉ?¨ê±?÷
       
        TIM_ClearFlag(TIM2,TIM_FLAG_Update);   //??3t?D??±ê??
       
        TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);    //?a???D??
               
        TIM_Cmd(TIM2,ENABLE);   //ê1?ü?¨ê±?÷

}

int main(void)
{
        LED_Config();
       
        NVIC_Config();
       
        Timer_Config();
       
        while(1)
        {
                if(time==1000)
                {
                        time = 0;
                       
                        led_Toggle;
                }
        }
}






回复

使用道具 举报

发表于 2019-3-1 15:18:07 | 显示全部楼层
参考野火的例程来改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-1 16:06:47 | 显示全部楼层
潮小男ㄨ 发表于 2019-3-1 15:18
参考野火的例程来改

我就是根据野火的例程来写的,,但始终运行不了,我调试了下,while进入if以后运行不下去了,,不知道什么原因,,我设置的脚是PC13,能麻烦看看吗?
回复 支持 反对

使用道具 举报

发表于 2019-3-1 17:25:50 | 显示全部楼层
你中断函数怎么写的?
回复 支持 反对

使用道具 举报

发表于 2019-3-1 17:30:42 | 显示全部楼层
中断函数呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-2 15:23:29 | 显示全部楼层
DAXSX 发表于 2019-3-1 17:25
你中断函数怎么写的?

void BASIC_TIM_IRQHandler (void)
2 {
3 if ( TIM_GetITStatus( BASIC_TIM, TIM_IT_Update) != RESET ) {
4 time++;
5 TIM_ClearITPendingBit(BASIC_TIM , TIM_FLAG_Update);
6 }


写上去也没用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-2 15:24:22 | 显示全部楼层

void BASIC_TIM_IRQHandler (void)
2 {
3 if ( TIM_GetITStatus( BASIC_TIM, TIM_IT_Update) != RESET ) {
4 time++;
5 TIM_ClearITPendingBit(BASIC_TIM , TIM_FLAG_Update);
6 }
7 }


我写了,,写上去也没用啊。定时器依然不工作啊
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-12 04:07 , Processed in 0.030575 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表