打印
[STM32F4]

F401和F407的定时器配置有区别吗?

[复制链接]
1987|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chuxh|  楼主 | 2021-9-12 12:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
F401和F407的定时器配置有区别吗?

使用特权

评论回复
沙发
pengf| | 2021-9-12 12:20 | 只看该作者

你有什么打算呢?或者你想知道什么?

使用特权

评论回复
板凳
chuxh|  楼主 | 2021-9-12 12:22 | 只看该作者
今天莫名其妙的在STM32F401 NUCLEO板子上折腾了一天通用定时器的配置,一直没有成功运行。

使用特权

评论回复
地板
chuxh|  楼主 | 2021-9-12 12:23 | 只看该作者
刚刚试着将代码改换到STM32F407 DISCO板子上运行,却意外地运行成功了。

使用特权

评论回复
5
wyjie| | 2021-9-12 12:27 | 只看该作者
LED闪烁?

使用特权

评论回复
6
chuxh|  楼主 | 2021-9-12 12:29 | 只看该作者
两块板子的区别只在于 前者使用内部晶振,后者使用外部晶振。

使用特权

评论回复
7
supernan| | 2021-9-12 12:30 | 只看该作者
程序是用来测试的所以没有注释,应该也容易看懂

使用特权

评论回复
8
huangchui| | 2021-9-12 12:32 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
9
chuxh|  楼主 | 2021-9-12 12:34 | 只看该作者
int main(void)

{

        RCC_ClocksTypeDef MyClock;

  SystemCoreClockSetHSI();

        RCC_GetClocksFreq (&MyClock);

        

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2 );

        Btn_EXTI_Init();

//        USART1_Init();

        LED_GPIO_Init ();

        LED_OFF ();



        TIM3_Config();

        while(1)

        {

//                        /* Toggle LED */

//                        LED_Toggle();

        }

        return 0;

}

使用特权

评论回复
10
chuxh|  楼主 | 2021-9-12 12:41 | 只看该作者
void TIM3_Config(void)

{

        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

        NVIC_InitTypeDef NVIC_InitStructure;

        

        NVIC_InitStructure .NVIC_IRQChannel = TIM3_IRQn;

        NVIC_InitStructure .NVIC_IRQChannelPreemptionPriority = 2;

        NVIC_InitStructure .NVIC_IRQChannelSubPriority = 0;

        NVIC_InitStructure .NVIC_IRQChannelCmd = ENABLE;

        NVIC_Init(&NVIC_InitStructure);

        

        RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3 ,ENABLE);

        

        TIM_DeInit(TIM3);

        

        TIM_TimeBaseStructure .TIM_Period = 1000-1;                        //1000*1ms = 1s

        TIM_TimeBaseStructure .TIM_Prescaler = 24000;                //1KHz -- 1ms

        TIM_TimeBaseStructure .TIM_CounterMode = TIM_CounterMode_Up ;

        TIM_TimeBaseStructure .TIM_ClockDivision = TIM_CKD_DIV1 ;

        

        TIM_TimeBaseInit (TIM3,&TIM_TimeBaseStructure);



        TIM_ClearFlag (TIM3,TIM_FLAG_Update);

        TIM_ITConfig (TIM3,TIM_IT_Update ,ENABLE);

        TIM_Cmd (TIM3,ENABLE);

}

使用特权

评论回复
11
chuxh|  楼主 | 2021-9-12 12:42 | 只看该作者
void TIM3_IRQHanlder(void)

{

        if(TIM_GetITStatus(TIM3,TIM_IT_Update ) != RESET )

        {

                TIM_ClearITPendingBit(TIM3,TIM_IT_Update);

                LED_Toggle ();

        }

}

使用特权

评论回复
12
xxrs| | 2021-9-12 12:45 | 只看该作者
用官方例程测试下看看;

使用特权

评论回复
13
chenjunt| | 2021-9-12 12:48 | 只看该作者
官方例程都是关于定时器的输入捕获,比较输出PWM输出的,我这个只是简单的计时中断...

使用特权

评论回复
14
kangzj| | 2021-9-12 12:49 | 只看该作者
然后对照了例程的配置,也查了网上各种博客和论坛资料,还是没解决...

使用特权

评论回复
15
chuxh|  楼主 | 2021-9-12 12:51 | 只看该作者
NUCLEO板子怎么这么怪...

使用特权

评论回复
16
jiajs| | 2021-9-12 12:52 | 只看该作者
那说明你根据其它库改的程序;

使用特权

评论回复
17
jlyuan| | 2021-9-12 12:54 | 只看该作者
就根据PWM输入的例程,改下初始化和中断的程序就差不多了;

使用特权

评论回复
18
chuxh|  楼主 | 2021-9-12 12:56 | 只看该作者
终于。。发现了
中断服务函数里,一个写成TIM3_IRQHanlder()、一个写成TIM3_IRQHandler()...

使用特权

评论回复
19
xxrs| | 2021-9-12 13:03 | 只看该作者
这是个不太被注意的方面.
想必 ST 为了引起开发者的注意, 特意定义了个不同的名称. 要留意它们之间的区别呀

使用特权

评论回复
20
shimx| | 2021-9-12 13:04 | 只看该作者
解决了就好;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

936

主题

11296

帖子

2

粉丝