打印
[技术问答]

搞了好久,切换外部震荡还是失败

[复制链接]
1381|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lacha|  楼主 | 2019-10-9 16:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

搞了好久,切换外部震荡还是失败, 驱动能力修改了:M0P_CLOCK->XTH_CR_f.DRIVER = 0xa;  检测STABLE标志后增加10ms延时也加了,  晶振电容值也换过好几种了

使用特权

评论回复
沙发
martinhu| | 2019-10-9 17:12 | 只看该作者
这段代码下载后,LED闪过了吗?程序是在哪卡住了,因为看你RCH的切换好像也是与手册上的步骤不一样

使用特权

评论回复
板凳
smartpower| | 2019-10-9 22:58 | 只看该作者

使用特权

评论回复
地板
lacha|  楼主 | 2019-10-10 11:16 | 只看该作者
本帖最后由 lacha 于 2019-10-10 11:19 编辑

上电只在内部震荡时闪了一下,就卡死在Clk_SwitchTo(ClkXTH)里. 使用内部震荡时是完全根据手册和例程的,完全没问题.

mcu.rar

483.12 KB

使用特权

评论回复
5
lacha|  楼主 | 2019-10-10 11:21 | 只看该作者
#include <stdio.h>
#include <string.h>  
#include "stdlib.h"

#include "ddl.h"
#include "gpio.h"

//---------------------------------------------------------------------
#define LED_init()                Gpio_InitIO(3, 3, GpioDirOut) //初始化IO
#define LED_enable                Gpio_SetIO(3, 3, 0)        //IO输出值设定(3,3=ip模块板)
#define LED_disable                Gpio_SetIO(3, 3, 1)        //IO输出值设定
//---KEY1---//初始化IO: 端口,引脚,方向,上拉,下拉,开漏,增强驱动
#define KEY1_init() Gpio_InitIOExt(2, 6, GpioDirIn, TRUE, FALSE, FALSE, FALSE)
#define CHK_key1()        Gpio_GetIO(2, 6) //模块板

//---------------------------------------------------------------------
//---------------------------------------------------------------------
int32_t main(void)
{        uint8_t a, led_flag;
    stc_clk_config_t stcClkCfg;
//---------------------------------------------------------------------   
    stcClkCfg.enClkSrc  = ClkRCH; //内部高速(需再设频率值)        时钟源切换
        Clk_SetRCHFreq(ClkFreq22_12Mhz); //ClkFreq22_12Mhz
    stcClkCfg.enHClkDiv = ClkDiv1; //不分频
    stcClkCfg.enPClkDiv = ClkDiv1;
    Clk_Init(&stcClkCfg); //时钟初始化函数(内含Clk_SwitchTo)
//---------------------------------
        KEY1_init();
        LED_init();
//---       
        LED_enable; //点灯
        delay_1ms(200);
        LED_disable; //熄灯
//---       
        delay_1ms(1000);
        Clk_SwitchTo(ClkXTH);
//---       
        LED_enable; //点灯
        delay_1ms(200);
        LED_disable; //熄灯
        delay_1ms(200);
        LED_enable; //点灯
        delay_1ms(200);
        LED_disable; //熄灯

        while(1)                              
        {         if (!CHK_key1())
                {        delay_1ms(20);
                        a = 0;
                        led_flag = 1;
                        LED_enable; //点灯
                        while (!CHK_key1()) //
                        {        delay_1ms(1);
                                a++;
                                if (!(a % 100))
                                {        led_flag++;
                                        if (led_flag % 2)
                                        {        LED_enable; //点灯
                                        }
                                        else
                                        {        LED_disable; //熄灯
                                        }
                                }
                        }
                        LED_disable; //熄灯
                }
        }
}

使用特权

评论回复
6
sgrtf661| | 2019-10-11 11:40 | 只看该作者
来找我 给技术支持 409946461

使用特权

评论回复
7
star262933| | 2020-11-3 20:39 | 只看该作者
Clk_SwitchTo(ClkXTH) 卡在这里可能是 晶振引脚接错了,有高频引脚和低频引脚 是分开的。你搞定了吗
我也遇到问题了。

使用特权

评论回复
8
查询无结果| | 2020-11-10 13:03 | 只看该作者
我昨天也调试了很久,按照给的流程切换到外部8M的晶振,一直不能稳定,不知道是什么情况

使用特权

评论回复
9
martinhu| | 2020-11-10 14:22 | 只看该作者
查询无结果 发表于 2020-11-10 13:03
我昨天也调试了很久,按照给的流程切换到外部8M的晶振,一直不能稳定,不知道是什么情况 ...

你这是哪一颗芯片,8M的时候,一般建议选最弱的设置,如果还不行,外部要加限流电阻了……

使用特权

评论回复
10
查询无结果| | 2020-11-10 15:25 | 只看该作者
martinhu 发表于 2020-11-10 14:22
你这是哪一颗芯片,8M的时候,一般建议选最弱的设置,如果还不行,外部要加限流电阻了……

...

感谢解答,晚上我回去试试最弱驱动能能力

使用特权

评论回复
11
查询无结果| | 2020-11-10 19:05 | 只看该作者
martinhu 发表于 2020-11-10 14:22
你这是哪一颗芯片,8M的时候,一般建议选最弱的设置,如果还不行,外部要加限流电阻了……

...

果然还是不行,你那边试过可以吗?可以给个历程吗?

使用特权

评论回复
12
smartpower| | 2020-11-10 21:00 | 只看该作者
谈晶振请贴原理图,PCB图,晶振手册

使用特权

评论回复
13
rickluo| | 2020-11-12 10:10 | 只看该作者


原理图,晶振位置,如上,请高手帮忙指点!


使用特权

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

本版积分规则

10

主题

29

帖子

1

粉丝