OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3562|回复: 5

求求大佬们,帮我看看吧,快搞了整整两天了

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-11-20
在线时间
0 小时
发表于 2020-11-20 23:18:28 | 显示全部楼层 |阅读模式
1金钱
用定时器点灯,不能实现闪烁效果。板子是stm32f103c8t6
timer.c
#include "timer.h"
#include "led.h"
#include "timer.h"
/*
1,时钟使能
2,配置预分频、自动重装值和重复计数值
3,清除中断标志位(否则会先进一次中断)
4,使能TIM中断,选择中断源
5,设置中断优先级
6,使能TIMx外设

arr:自动重装值  
psc:时钟预分频数  
*/
void TIM1_Init(u16 arr,u16 psc)  

{  

  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  
  NVIC_InitTypeDef NVIC_InitStructure;  

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //时钟使能  

  TIM_TimeBaseStructure.TIM_Period = arr; //设置自动重装载寄存器周期值  
  TIM_TimeBaseStructure.TIM_Prescaler =(psc-1);//设置预分频值
  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割  
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式  
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;//重复计数设置  
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //参数初始化  

  TIM_ClearFlag(TIM1, TIM_FLAG_Update);//清中断标志位  

  TIM_ITConfig(      //使能或者失能指定的TIM中断  
    TIM1,            //TIM1  
    TIM_IT_Update  | //TIM 更新中断源  
    TIM_IT_Trigger,  //TIM 触发中断源   
    ENABLE           //使能  
    );  

  //设置优先级  

  NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;   
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//先占优先级0级  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;       //从优先级0级  
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  NVIC_Init(&NVIC_InitStructure);   

  TIM_Cmd(TIM1, ENABLE);  //使能TIMx外设  
}  


void TIM1_UP_IRQHandler(void)   //TIM1中断
{
        if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET) //检查指定的TIM1中断发生与否:TIM1 中断源
        {
           TIM_ClearITPendingBit(TIM1, TIM_IT_Update);  //清除TIMx的中断待处理位:TIM1 中断源
           GPIO_WriteBit(LEDPORT,LED,(BitAction)(0));
        }
}

main.c
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"


/************************************************
ALIENTEK战舰STM32开发板实验8
定时器中断实验
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司  
作者:正点原子 @ALIENTEK
************************************************/



int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        
        uart_init(115200);         //串口初始化为115200
        LED_Init();                             //LED端口初始化
        TIM1_Init(71,999999);
}

led.c
#include "led.h"

//////////////////////////////////////////////////////////////////////////////////         
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK战舰STM32开发板
//LED驱动代码          
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2012/9/2
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved                                                                          
//////////////////////////////////////////////////////////////////////////////////           

//初始化PB5和PE5为输出口.并使能这两个口的时钟                    
//LED IO初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//构造结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能其所在时钟
GPIO_InitStructure.GPIO_Pin = LED;//定义IO端口
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_IPU;//定义IO端口输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//定义IO端口输出速度
GPIO_Init(LEDPORT, &GPIO_InitStructure);//写入其中
}
请大家帮我看看,感激不尽

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-11-20
在线时间
0 小时
 楼主| 发表于 2020-11-20 23:20:38 | 显示全部楼层
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-11-20
在线时间
0 小时
 楼主| 发表于 2020-11-20 23:21:09 | 显示全部楼层
大家帮忙看看吧
回复

使用道具 举报

7

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1159
金钱
1159
注册时间
2018-5-30
在线时间
151 小时
发表于 2020-11-21 10:33:28 | 显示全部楼层
不能一直初始化呀
int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         
        uart_init(115200);         //串口初始化为115200
        LED_Init();                             //LED端口初始化
        TIM1_Init(71,999999);

    while(1);

}
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4947
金钱
4947
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-11-21 11:41:34 | 显示全部楼层
第一,中断里面只有IO写0,没有写1,LED怎么会闪呢
第二,预分频是16bit的,你写个99999也没用,最大就65535
第三,LED能看出明显闪烁至少频率要在10Hz以下
回复

使用道具 举报

41

主题

278

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2357
金钱
2357
注册时间
2019-10-29
在线时间
380 小时
发表于 2020-11-21 11:53:01 | 显示全部楼层
楼上大神说的不错
再说例程代码有点灯的啊,你先对着例程代码看,看不懂,看视频,一步一步来,我看你这个代码都有点乱
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 18:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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