一、开发环境及工具

  1. HC32F003 / HC32F005
  2. Keil uVision5 V5.33 / IAR For ARM 7.80.4 (J-Link)
  3. 此工程源码下载路径 : https://gitee.com/amx/hc32ddl-app

二、系统时钟修改

  1. 时钟控制模块框图(我们使用内部高速时钟RCH)

  1. 将系统时钟由默认4MH改为16MHz (在system_hc32f005.c文件中)

    uint32_t SystemCoreClock = 4000000;
    uint32_t SystemHclkClock = 0;//add clock source.
    void SystemCoreClockUpdate (void) // Update SystemCoreClock variable
    {SystemCoreClock = Sysctrl_GetHClkFreq();SystemHclkClock = Sysctrl_GetPClkFreq();
    }//系统时钟配置
    void App_ClkCfg(void)
    {stc_sysctrl_clk_cfg_t stcCfg;///< 因要使用的时钟源HCLK小于等于24M:此处设置FLASH 读等待周期为0 cycle(默认值也为0 cycle)Flash_WaitCycle(FlashWaitCycle0);///< 时钟初始化前,优先设置要使用的时钟源:此处设置RCH为4MHz(默认值为4MHz)Sysctrl_SetRCHTrim(SysctrlRchFreq16MHz);///< 选择内部RCH作为HCLK时钟源;stcCfg.enClkSrc    = SysctrlClkRCH;///< HCLK SYSCLK/2stcCfg.enHClkDiv   = SysctrlHclkDiv1;///< PCLK 为HCLK/8stcCfg.enPClkDiv   = SysctrlPclkDiv1;///< 系统时钟初始化Sysctrl_ClkInit(&stcCfg);
    }/********************************************************************************** \brief  Setup the microcontroller system. Initialize the System and update** the SystemCoreClock variable.**** \param  none** \return none******************************************************************************/
    void SystemInit(void)
    {App_ClkCfg();             // 配置时钟SystemCoreClockUpdate();  // 获取HCLK和PCLK
    }
    

三、基本定时器BT

  1. 定时器功能-16位自动重载模式(定时器为溢出中断)

    uint32_t delaytick;/******************************************************************************** BT定时功能测试 (重载模式)******************************************************************************/
    en_result_t App_BtTimerTest(void)
    {stc_bt_cfg_t         stcCfg;en_result_t       enResult = Error;uint16_t          u16ArrData = 0x10000 - 10000;       // 10ms中断一次uint16_t          u16InitCntData = 0x10000 - 10000;Sysctrl_SetPeripheralGate(SysctrlPeripheralBt, TRUE);stcCfg.enGateP = BtPositive;stcCfg.enGate  = BtGateDisable;stcCfg.enPRS   = BtPCLKDiv16; // 16分频stcCfg.enTog   = BtTogDisable;stcCfg.enCT    = BtTimer;        // 定时器功能stcCfg.enMD    = BtMode2;      // 自动重装载16位定时器//Bt配置初始化if (Ok != Bt_Init(TIM0, &stcCfg)){enResult = Error;}//INT ENABLEBt_ClearIntFlag(TIM0);Bt_EnableIrq(TIM0);EnableNvic(TIM0_IRQn, IrqLevel3, TRUE);//设置重载值和计数值,启动计数Bt_ARRSet(TIM0, u16ArrData);Bt_Cnt16Set(TIM0, u16InitCntData);Bt_Run(TIM0);return enResult;
    }/******************************************************************************** TIM0中断服务函数******************************************************************************/
    void Tim0_IRQHandler(void)
    {if (TRUE == Bt_GetIntFlag(TIM0)){Bt_ClearIntFlag(TIM0);delaytick++;}
    }
    
  2. 主函数调用

    int32_t main(void)
    {SystemInit();App_BtTimerTest();while (1){}
    }
    

四、仿真测试

  1. 主频16Mhz,定时10ms中断一次,连接J-Link仿真运行查看定时器中断delaytick值变化:

    MDK中:

IAR中(窗口约1秒钟刷新一次):

华大HC32-(02)-系统时钟和基本定时器相关推荐

  1. GD32F4xx系统时钟滴答定时器

    1,打开GD32F4的用户手册,该芯片是基于cortex M4的. 2,GD32F4芯片的时钟树,可以找到Systick的时钟源. 3,系统时钟配置: 在System_gd32f4xx.c文件中根据当 ...

  2. STM32之Systick(系统时钟滴答定时器)

    systick定时器有两个可选的时钟源,一个是外部时钟源(STCLK,等于HCLK/8),另一个是内核时钟(FCLK,等于HCLK).假若你选择内核时钟,并将HCLK频率设置为72MHz的话,系统时钟 ...

  3. 十三届蓝桥杯嵌入式系统时钟——滴答定时器

    在我的上一篇led中有一种延时led亮灭的代码里面有一个uwTick,它每1ms会加一,这是在哪里定义的呢?包括 HAL_Delay() 函数,利用的就是SysTick系统滴答定时器. Systick ...

  4. 寄存器(R0~R16)以及从SysTick系统时钟理解RTOS移植初始化

    移植系统最重要的细节之一就是配置系统时钟 第一次玩RT-Thread,发现同样的程序逻辑,测试现象不一样,从现象很明显看出来是时钟频率配置不一样. 由于之前玩STM32几乎没有关注过系统时钟的初始化, ...

  5. DSP学习笔记之系统时钟、定时器、GPIO篇

    \qquad写在前面,不管是C51.MSP430.32也好,DSP也好,总要有一个掌握的比较熟练,不能每次都复制粘贴别人的代码然后修修补补吧.不要再做Ctrl +C.Ctrl+V工程师.主要参考来自于 ...

  6. JZ2440系统时钟和定时器

    系统时钟 首先看下各个模块与时钟总线的关系: 芯片刚开始上电时, 运行的时钟就等于晶振的时钟Fin, 通过设置MPLL和UPLL可以提升运行频率. MPLL计算方法: 例: Fout = (2 * ( ...

  7. 零基础无实物一步一步学PLCS7-1200仿真(七)-led灯闪烁-定时器或系统时钟

    本项目是点亮一个LED指示灯,点亮LED灯是任何控制器最开始入门最重要的一个项目.本例至今才开始讲这个项目是因为PLC的优势是直接对照电路图生成PLC程序,之前提到的电机自锁和互锁电路都是PLC程序与 ...

  8. STM32使用内部时钟HSI作为系统时钟及配置Systick定时器

    参考:https://blog.csdn.net/huangyangquan/article/details/78790443 https://www.cnblogs.com/dustinzhu/p/ ...

  9. Linux: 硬件时钟, 系统时钟, 网络时钟, 时区修改和同步

    目录 基础认识 常用命令 查看和修改Linux的时区 常见时区 timedatectl 时钟同步 用硬件时钟同步系统时钟: 用系统时钟同步硬件时钟: 同步网络时间 hwclock命令 语法 查看和修改 ...

最新文章

  1. 数据结构源码笔记(C语言描述)汇总
  2. 全球及中国钒(V)蒸发材料行业发展动态分析及未来前景预测报告2021年版
  3. hdu 3081(并查集+最大流)
  4. delphi里用java_如何在整个Delphi应用程序中使用ID
  5. Exp 8 Web基础
  6. 第 14 章 结构和其他数据形式(names)
  7. 4.Prometheus 监控技术与实践 --- 服务发现
  8. 最新开源:BundleTrack - 无需任何CAD模型的6D物体姿态跟踪算法(谷歌X实习生)...
  9. iOS开发UI篇—程序启动原理和UIApplication
  10. 3dsmax2021软件安装教程
  11. 磊科全功能路由器上网行为管理配置指南 -- 路由器
  12. Matlba实现傅里叶变换及其逆变换
  13. 用单摆测量重力加速度
  14. [问题已处理]-centos7 history命令没有任何记录
  15. python分苹果问题_蓝桥杯--算法提高--VIP--分苹果题目(差分数组)
  16. 无线鼠标没有反应(HID-compliant mouse)
  17. 不学C语言能直接学C++吗?
  18. HDU-2017 多校训练赛9-1005-FFF at Valentine
  19. 爱伦·坡:写作的哲学
  20. RestoreDet

热门文章

  1. 3.Nacos一致性协议Raft
  2. linux 版本mysql 数据乱码_linux mysql 数据库乱码
  3. 什么是CIF视频格式
  4. AmazeUI(妹子UI)中CSS组件、JS插件、Web组件的区别
  5. 新浪微博OAuth2.0授权及使用python调用微博API
  6. 室内导航html,一种室内导航方法与流程
  7. JS实现下拉选择日期,下拉选择年月日
  8. IDC机房专业除尘技术详解
  9. 数据库SQL查询作业
  10. 堪称开发界的瑞士军刀,太强大了