海洋无限 发表于 2020-9-30 21:26

【华大测评】+ 环境搭建,点灯、按键等

本帖最后由 海洋无限 于 2020-9-30 21:25 编辑

今天搭建开发板开发环境,keil+JLink,其实论坛很多 人都写过了,坑也填的差不多了,这里就不多废话了,我搭建和顺利,基本没出现什么问题。这里只说一个我踩到的雷,估计大多数人都碰不到。对一个自己之前没有用过的开发板,搭建工程时,我不太喜欢使用提供的Project Sample,一般我都会从头搭建,顺便熟悉下库文件及文件放置的规律。我是在官网上下载的资料,开始搭建,同时为了驱动LCD,我也下载了论坛上的驱动LCD的样例程序,这里犯了一个严重的错误,CPU相关的库文件及配置文件我在搭建时混着用了,编译出错了,然后我用BC进行了对比,发现库文件中的定义不同,如下:

当时没反应过来,我就编译了下LCD的代码,OK,心里想不会是官方的例程编不过吧,对比了两个库文件下的readme,才发现官网的比较新,这才意识到文件混用了,马上改正后编译顺利通过,这里浪费了一些时间,这里建议大家直接用官网的例程就可以了,不会出现我出现的问题,这里是个小插曲。
言归正传,按照例程copy LED代码,使能System tick定时器,驱动LED闪烁,写Key读取代码(这里是单个按键,矩阵按键准备等下次再弄)并驱动LED闪烁,
#defineLED0_PORT      (PortE)   // LED1
#defineLED0_PIN         (Pin06)
#defineLED1_PORT      (PortA)   // LED2
#defineLED1_PIN         (Pin07)
#defineLED2_PORT      (PortB)   // LED3
#defineLED2_PIN         (Pin05)
#defineLED3_PORT      (PortB)   // LED4
#defineLED3_PIN         (Pin09)/* LED0~3 toggle definition */
#defineLED0_TOGGLE()    (PORT_Toggle(LED0_PORT, LED0_PIN))
#defineLED1_TOGGLE()    (PORT_Toggle(LED1_PORT, LED1_PIN))
#defineLED2_TOGGLE()    (PORT_Toggle(LED2_PORT, LED2_PIN))
#defineLED3_TOGGLE()    (PORT_Toggle(LED3_PORT, LED3_PIN))static void SysClkInit(void)
{
    en_clk_sys_source_t   enSysClkSrc;
    stc_clk_sysclk_cfg_t    stcSysClkCfg;
    stc_clk_xtal_cfg_t      stcXtalCfg;
    stc_clk_mpll_cfg_t      stcMpllCfg;

    MEM_ZERO_STRUCT(enSysClkSrc);
    MEM_ZERO_STRUCT(stcSysClkCfg);
    MEM_ZERO_STRUCT(stcXtalCfg);
    MEM_ZERO_STRUCT(stcMpllCfg);

    /* Set bus clk div. */
    stcSysClkCfg.enHclkDiv = ClkSysclkDiv1;   // Max 168MHz
    stcSysClkCfg.enExclkDiv = ClkSysclkDiv2;// Max 84MHz
    stcSysClkCfg.enPclk0Div = ClkSysclkDiv1;// Max 168MHz
    stcSysClkCfg.enPclk1Div = ClkSysclkDiv2;// Max 84MHz
    stcSysClkCfg.enPclk2Div = ClkSysclkDiv4;// Max 60MHz
    stcSysClkCfg.enPclk3Div = ClkSysclkDiv4;// Max 42MHz
    stcSysClkCfg.enPclk4Div = ClkSysclkDiv2;// Max 84MHz
    CLK_SysClkConfig(&stcSysClkCfg);

    /* Switch system clock source to MPLL. */
    /* Use Xtal32 as MPLL source. */
    stcXtalCfg.enMode = ClkXtalModeOsc;
    stcXtalCfg.enDrv = ClkXtalLowDrv;
    stcXtalCfg.enFastStartup = Enable;
    CLK_XtalConfig(&stcXtalCfg);
    CLK_XtalCmd(Enable);

    /* MPLL config. */
    stcMpllCfg.pllmDiv = 1u;
    stcMpllCfg.plln =42u;
    stcMpllCfg.PllpDiv = 2u;
    stcMpllCfg.PllqDiv = 2u;
    stcMpllCfg.PllrDiv = 2u;
    CLK_SetPllSource(ClkPllSrcXTAL);
    CLK_MpllConfig(&stcMpllCfg);

    /* flash read wait cycle setting */
    EFM_Unlock();
    EFM_SetLatency(EFM_LATENCY_5);
    EFM_Lock();

    /* Enable MPLL. */
    CLK_MpllCmd(Enable);

    /* Wait MPLL ready. */
    while(Set != CLK_GetFlagStatus(ClkFlagMPLLRdy))
    {
      ;
    }

    /* Switch system clock source to MPLL. */
    CLK_SetSysClkSource(CLKSysSrcMPLL);
}#defineACTIVE_LEVEL_LOW   (0)
#defineACTIVE_LEVEL_HIGH(1)
#defineKEY_ACTIVE_LEVEL   ACTIVE_LEVEL_LOW
#defineKEY_PORT         (PortD)
#defineKEY1_PIN         (Pin03)
#defineKEY2_PIN         (Pin04)
#defineKEY3_PIN         (Pin05)
#defineKEY4_PIN         (Pin06)然后编译,烧写后看到开发板Green LED 灯周期闪烁,Blue LED 在SW2每按下一次状态翻转一次,收工。



zeshoufx 发表于 2020-9-30 21:57

谢谢分享【 环境搭建,点灯、按键】

tfqi 发表于 2020-10-11 17:08

非常感谢楼主分享

wiba 发表于 2020-10-11 17:09

自己做的留下的**更深刻

zljiu 发表于 2020-10-11 17:09

看起来还是很好上手的

coshi 发表于 2020-10-11 17:09

非常不错 很详细

磨砂 发表于 2020-10-11 17:10

支持楼主一下

zly188 发表于 2021-1-6 21:00

采用ISP下载后,断电后才能运行吗?还是下载后可以直接运行。

海洋无限 发表于 2021-1-7 12:26

zly188 发表于 2021-1-6 21:00
采用ISP下载后,断电后才能运行吗?还是下载后可以直接运行。

这个不记得了,是不是要reset下

caigang13 发表于 2021-1-7 20:37

不错,感谢楼主分享。

单片小菜 发表于 2021-1-8 10:51

这个帖子不错的,感谢楼主的分享。

xiaoyaodz 发表于 2021-1-12 23:40

差一个演示视频了。华大的芯片效果怎么样   

杨寅辉 发表于 2021-1-15 10:37

zly188 发表于 2021-1-6 21:00
采用ISP下载后,断电后才能运行吗?还是下载后可以直接运行。

这个应该是可以在软件中配置的吧,配置为下载后运行就OK了。
页: [1]
查看完整版本: 【华大测评】+ 环境搭建,点灯、按键等