打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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

  7.     MEM_ZERO_STRUCT(enSysClkSrc);
  8.     MEM_ZERO_STRUCT(stcSysClkCfg);
  9.     MEM_ZERO_STRUCT(stcXtalCfg);
  10.     MEM_ZERO_STRUCT(stcMpllCfg);

  11.     /* Set bus clk div. */
  12.     stcSysClkCfg.enHclkDiv = ClkSysclkDiv1;   // Max 168MHz
  13.     stcSysClkCfg.enExclkDiv = ClkSysclkDiv2;  // Max 84MHz
  14.     stcSysClkCfg.enPclk0Div = ClkSysclkDiv1;  // Max 168MHz
  15.     stcSysClkCfg.enPclk1Div = ClkSysclkDiv2;  // Max 84MHz
  16.     stcSysClkCfg.enPclk2Div = ClkSysclkDiv4;  // Max 60MHz
  17.     stcSysClkCfg.enPclk3Div = ClkSysclkDiv4;  // Max 42MHz
  18.     stcSysClkCfg.enPclk4Div = ClkSysclkDiv2;  // Max 84MHz
  19.     CLK_SysClkConfig(&stcSysClkCfg);

  20.     /* Switch system clock source to MPLL. */
  21.     /* Use Xtal32 as MPLL source. */
  22.     stcXtalCfg.enMode = ClkXtalModeOsc;
  23.     stcXtalCfg.enDrv = ClkXtalLowDrv;
  24.     stcXtalCfg.enFastStartup = Enable;
  25.     CLK_XtalConfig(&stcXtalCfg);
  26.     CLK_XtalCmd(Enable);

  27.     /* MPLL config. */
  28.     stcMpllCfg.pllmDiv = 1u;
  29.     stcMpllCfg.plln =42u;
  30.     stcMpllCfg.PllpDiv = 2u;
  31.     stcMpllCfg.PllqDiv = 2u;
  32.     stcMpllCfg.PllrDiv = 2u;
  33.     CLK_SetPllSource(ClkPllSrcXTAL);
  34.     CLK_MpllConfig(&stcMpllCfg);

  35.     /* flash read wait cycle setting */
  36.     EFM_Unlock();
  37.     EFM_SetLatency(EFM_LATENCY_5);
  38.     EFM_Lock();

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

  41.     /* Wait MPLL ready. */
  42.     while(Set != CLK_GetFlagStatus(ClkFlagMPLLRdy))
  43.     {
  44.       ;
  45.     }

  46.     /* Switch system clock source to MPLL. */
  47.     CLK_SetSysClkSource(CLKSysSrcMPLL);
  48. }
复制代码
  1. #define  ACTIVE_LEVEL_LOW   (0)
  2. #define  ACTIVE_LEVEL_HIGH  (1)
  3. #define  KEY_ACTIVE_LEVEL   ACTIVE_LEVEL_LOW
  4. #define  KEY_PORT           (PortD)
  5. #define  KEY1_PIN           (Pin03)
  6. #define  KEY2_PIN           (Pin04)
  7. #define  KEY3_PIN           (Pin05)
  8. #define  KEY4_PIN           (Pin06)
复制代码
然后编译,烧写后看到开发板Green LED 灯周期闪烁,Blue LED 在SW2每按下一次状态翻转一次,收工。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
STM32F207串口
【RISC-V MCU应用开发】详解EC11编码器高效驱动方法
STM32 HAL库
STM32模拟SPI的程序
7279键盘显示程序
Quartus II使用常见问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服