搜索
bottom↓
回复: 10

定时器不工作,看看代码哪里不对

[复制链接]

出0入0汤圆

发表于 2014-10-27 13:59:39 | 显示全部楼层 |阅读模式
#include"stm32f10x.h"
#include"stm32f10x_gpio.h"
#include"stm32f10x_rcc.h"
#include"stm32f10x_tim.h"
#include"delay.h"

void RCC_Configuration(void)
{
   
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
}

void GPIO_Configuration(void)
{
   
        GPIO_InitTypeDef GPIO_InitStructure;
   
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Init(GPIOD,&GPIO_InitStructure);

    GPIO_ResetBits(GPIOD,GPIO_Pin_7);

}

void TIM3_Configuration(void)
{

    TIM_TimeBaseInitTypeDef TIMEBaseInitStructure;
    TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
   
    TIMEBaseInitStructure.TIM_Period=2000;
    TIMEBaseInitStructure.TIM_Prescaler=35999;
    TIMEBaseInitStructure.TIM_ClockDivision=0;
    TIMEBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM3,&TIMEBaseInitStructure);

    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);

    TIM_Cmd(TIM3,ENABLE);
}

void NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
   
    NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
    NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}

void TIM3_IRQHandler(void)
{
        if(GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_7)==Bit_RESET)
        {
                //LED 熄灭
        GPIO_SetBits(GPIOD,GPIO_Pin_7);       
        }
        else
        {
        //LED 发光
        GPIO_ResetBits(GPIOD,GPIO_Pin_7);
        }
    TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}

int main(void)
{
        RCC_Configuration();
        GPIO_Configuration();
    TIM3_Configuration();
    NVIC_Configuration();
        while(1);  
}

新手学习,没有一个程序一次成功过,真伤心!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2014-10-27 14:29:49 | 显示全部楼层
本帖最后由 zhangyihua 于 2014-10-27 14:34 编辑

仿真看能不能进中断

出0入0汤圆

 楼主| 发表于 2014-10-27 14:41:43 | 显示全部楼层
zhangyihua 发表于 2014-10-27 14:29
仿真看能不能进中断

代码没有错误是不是?

出0入0汤圆

发表于 2014-10-27 15:39:04 | 显示全部楼层
LZ有什么现象表明定时器不工作?

出0入0汤圆

 楼主| 发表于 2014-10-27 15:43:02 | 显示全部楼层
qtds67 发表于 2014-10-27 15:39
LZ有什么现象表明定时器不工作?

板子没反应,我是想让灯闪起来

出0入0汤圆

发表于 2014-10-27 16:40:37 | 显示全部楼层
zsikuan 发表于 2014-10-27 15:43
板子没反应,我是想让灯闪起来

你都没确定是不是定时器不工作的问题,点灯放到中断处理中去???
定时器延时多长才能看到灯闪,算了没有

出0入0汤圆

发表于 2014-10-27 16:42:53 | 显示全部楼层
先测试灯的IO配置好了没。再确定是不是定时器问题。

出0入0汤圆

发表于 2014-10-27 16:43:39 | 显示全部楼层
主程序活着的话,一般都是配置问题,看看芯片资料吧

出0入0汤圆

发表于 2014-10-27 17:22:36 | 显示全部楼层
本帖最后由 didadida 于 2014-10-27 17:23 编辑

新手么?建议来一个逻辑分析仪,最便宜的那种就行,就是一个用于观察数字信号的“示波器”了,当然你有示波器的话另说。另外stm32的库里有一个官方的文档,这里边都是例程,绝对可以运行的,你修改引脚之类的就行了。有的时候,还是少提问,多看文档。

刚才想上传,但是文件有点大(18.7M),你就百度搜索 stm32f10x_stdperiph_lib_um 下载就行

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-10-27 17:44:33 | 显示全部楼层
程序编译没错的话,建议还是仿真下,一步步的走,分析定位问题

出0入0汤圆

发表于 2014-10-27 18:00:00 | 显示全部楼层
APB1时钟36M,计数35999+1=36000,故计数频率为36000000/36000=1000Hz。
计数2000,应该是2s一次中断。
先进入debug模式,在TIM3_IRQHandler里打个断点,看能不能进到中断里。
再就是看看STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples里的例子,看看人家是怎么写的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 18:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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