注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
皓禹HY的个人空间 https://home.eeworld.com.cn/space-uid-998408.html [收藏] [复制] [分享] [RSS]
日志

我这山寨stm32f103c8t6到底是个啥芯片

已有 1143 次阅读2022-4-22 11:48 |个人分类:嵌入式

    前段时间买了几片stm32f103c8t6的最小系统板做实验用,买回来后发现jlink连接不上只能指定M3核心才能连上,,问卖家是个啥芯片重新打码的,,也不回,,哎没法用啊,不知道是个啥型号,网上一通搜下了各个品牌的库,最后发现APM的能用,,心想应该是这个芯片了,,然后一通实验检测外设是否对得上,,大部分功能跟手册上对得上,,实验到现在心里没底了,也不能确定是不是apm了,怪事出来了,,,用J-MEM发现这芯片居然有256K-Flash,96K-SRam,,而且跑128M频率,Flash居然可以0周期等待稳定运行,也没温度,就是晶振那一块抗干扰不行,手摸上去就跑飞,,其他正品片子,或者手上知道型号的假片子手摸上去不会跑飞,但是速度会变慢

    这片子48引脚,M3核心,256K-Flash,96K-SRam,128M、Flash0等待,DAC2通道,定时器1,2,3,4,5,6,7,这到底买到了个啥

 

 

//#define SYSTEM_CLOCK_HSE    HSE_VALUE
//#define SYSTEM_CLOCK_24MHz  (24000000)
//#define SYSTEM_CLOCK_36MHz  (36000000)
//#define SYSTEM_CLOCK_48MHz  (48000000)
//#define SYSTEM_CLOCK_56MHz  (56000000)
//#define SYSTEM_CLOCK_72MHz  (72000000)
//#define SYSTEM_CLOCK_96MHz  (96000000)
//#define SYSTEM_CLOCK_120MHz  (120000000)
#define SYSTEM_CLOCK_128MHz  (128000000)

/* #define VECT_TAB_SRAM */
#define VECT_TAB_OFFSET     0x00

#ifdef SYSTEM_CLOCK_HSE
uint32_t SystemCoreClock         = SYSTEM_CLOCK_HSE;
#elif defined SYSTEM_CLOCK_24MHz
uint32_t SystemCoreClock         = SYSTEM_CLOCK_24MHz;
#elif defined SYSTEM_CLOCK_36MHz
uint32_t SystemCoreClock         = SYSTEM_CLOCK_36MHz;
#elif defined SYSTEM_CLOCK_48MHz
uint32_t SystemCoreClock         = SYSTEM_CLOCK_48MHz;
#elif defined SYSTEM_CLOCK_56MHz
uint32_t SystemCoreClock         = SYSTEM_CLOCK_56MHz;
#elif defined SYSTEM_CLOCK_72MHz
uint32_t SystemCoreClock         = SYSTEM_CLOCK_72MHz;
#elif defined SYSTEM_CLOCK_96MHz
uint32_t SystemCoreClock         = SYSTEM_CLOCK_96MHz;
#elif defined SYSTEM_CLOCK_120MHz
uint32_t SystemCoreClock         = SYSTEM_CLOCK_120MHz;
#else
uint32_t SystemCoreClock         = SYSTEM_CLOCK_128MHz;
#endif

 

====================================================

static void SystemClock128M(void)
{
    __IO uint32_t i;

    RCM->CTRL_B.HSEEN= BIT_SET;

    for(i = 0; i < HSE_STARTUP_TIMEOUT; i++)
    {
        if(RCM->CTRL_B.HSERDYFLG)
        {
            break;
        }
    }

    if(RCM->CTRL_B.HSERDYFLG)
    {
        /* Enable Prefetch Buffer */
        FMC->CTRL1_B.PBEN = BIT_SET;
        /* Flash 3 wait state */
        FMC->CTRL1_B.WS = 0;    //====这里也改了

        /* HCLK = SYSCLK */
        RCM->CFG_B.AHBPSC= 0X00;
        /* PCLK2 = HCLK */
        RCM->CFG_B.APB2PSC= 0;
        /* PCLK1 = HCLK / 2 */
        RCM->CFG_B.APB1PSC = 4;

        /** PLL: HSE * 15 */
        RCM->CFG_B.PLLSRCSEL = 1;
        RCM->CFG_B.PLLMULCFG = 14;

        /** Enable PLL */
        RCM->CTRL_B.PLLEN = 1;
        /** Wait PLL Ready */
        while(RCM->CTRL_B.PLLRDYFLG == BIT_RESET);

        /* Select PLL as system clock source */
        RCM->CFG_B.SCLKSW = 2;
        /* Wait till PLL is used as system clock source */
        while(RCM->CFG_B.SCLKSWSTS!= 0x02);
    }
}

==================================================

 

void TMR_Init()
{
    TMR_BaseConfig_T TMR_BaseConfigStruct;
    
    
    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_TMR1);
    
    TMR_BaseConfigStruct.clockDivision = TMR_CLOCK_DIV_1;
    TMR_BaseConfigStruct.countMode = TMR_COUNTER_MODE_UP;
    TMR_BaseConfigStruct.division = 1279;
    TMR_BaseConfigStruct.period = 49999;
    TMR_BaseConfigStruct.repetitionCounter = 0;
    TMR_ConfigTimeBase(TMR1, &TMR_BaseConfigStruct);
    
    TMR_EnableInterrupt(TMR1, TMR_INT_UPDATE);
    NVIC_EnableIRQRequest(TMR1_UP_IRQn, 0, 0);
    
    TMR_Enable(TMR1);
}

0等待稳定运行,,逻辑分析仪测试,时间也准确

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章