华大HC32-(02)-系统时钟和基本定时器
一、开发环境及工具
- HC32F003 / HC32F005
- Keil uVision5 V5.33 / IAR For ARM 7.80.4 (J-Link)
- 此工程源码下载路径 : https://gitee.com/amx/hc32ddl-app
二、系统时钟修改
- 时钟控制模块框图(我们使用内部高速时钟RCH)
将系统时钟由默认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
定时器功能-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++;} }
主函数调用
int32_t main(void) {SystemInit();App_BtTimerTest();while (1){} }
四、仿真测试
主频16Mhz,定时10ms中断一次,连接J-Link仿真运行查看定时器中断delaytick值变化:
MDK中:
IAR中(窗口约1秒钟刷新一次):
华大HC32-(02)-系统时钟和基本定时器相关推荐
- GD32F4xx系统时钟滴答定时器
1,打开GD32F4的用户手册,该芯片是基于cortex M4的. 2,GD32F4芯片的时钟树,可以找到Systick的时钟源. 3,系统时钟配置: 在System_gd32f4xx.c文件中根据当 ...
- STM32之Systick(系统时钟滴答定时器)
systick定时器有两个可选的时钟源,一个是外部时钟源(STCLK,等于HCLK/8),另一个是内核时钟(FCLK,等于HCLK).假若你选择内核时钟,并将HCLK频率设置为72MHz的话,系统时钟 ...
- 十三届蓝桥杯嵌入式系统时钟——滴答定时器
在我的上一篇led中有一种延时led亮灭的代码里面有一个uwTick,它每1ms会加一,这是在哪里定义的呢?包括 HAL_Delay() 函数,利用的就是SysTick系统滴答定时器. Systick ...
- 寄存器(R0~R16)以及从SysTick系统时钟理解RTOS移植初始化
移植系统最重要的细节之一就是配置系统时钟 第一次玩RT-Thread,发现同样的程序逻辑,测试现象不一样,从现象很明显看出来是时钟频率配置不一样. 由于之前玩STM32几乎没有关注过系统时钟的初始化, ...
- DSP学习笔记之系统时钟、定时器、GPIO篇
\qquad写在前面,不管是C51.MSP430.32也好,DSP也好,总要有一个掌握的比较熟练,不能每次都复制粘贴别人的代码然后修修补补吧.不要再做Ctrl +C.Ctrl+V工程师.主要参考来自于 ...
- JZ2440系统时钟和定时器
系统时钟 首先看下各个模块与时钟总线的关系: 芯片刚开始上电时, 运行的时钟就等于晶振的时钟Fin, 通过设置MPLL和UPLL可以提升运行频率. MPLL计算方法: 例: Fout = (2 * ( ...
- 零基础无实物一步一步学PLCS7-1200仿真(七)-led灯闪烁-定时器或系统时钟
本项目是点亮一个LED指示灯,点亮LED灯是任何控制器最开始入门最重要的一个项目.本例至今才开始讲这个项目是因为PLC的优势是直接对照电路图生成PLC程序,之前提到的电机自锁和互锁电路都是PLC程序与 ...
- STM32使用内部时钟HSI作为系统时钟及配置Systick定时器
参考:https://blog.csdn.net/huangyangquan/article/details/78790443 https://www.cnblogs.com/dustinzhu/p/ ...
- Linux: 硬件时钟, 系统时钟, 网络时钟, 时区修改和同步
目录 基础认识 常用命令 查看和修改Linux的时区 常见时区 timedatectl 时钟同步 用硬件时钟同步系统时钟: 用系统时钟同步硬件时钟: 同步网络时间 hwclock命令 语法 查看和修改 ...
最新文章
- 数据结构源码笔记(C语言描述)汇总
- 全球及中国钒(V)蒸发材料行业发展动态分析及未来前景预测报告2021年版
- hdu 3081(并查集+最大流)
- delphi里用java_如何在整个Delphi应用程序中使用ID
- Exp 8 Web基础
- 第 14 章 结构和其他数据形式(names)
- 4.Prometheus 监控技术与实践 --- 服务发现
- 最新开源:BundleTrack - 无需任何CAD模型的6D物体姿态跟踪算法(谷歌X实习生)...
- iOS开发UI篇—程序启动原理和UIApplication
- 3dsmax2021软件安装教程
- 磊科全功能路由器上网行为管理配置指南 -- 路由器
- Matlba实现傅里叶变换及其逆变换
- 用单摆测量重力加速度
- [问题已处理]-centos7 history命令没有任何记录
- python分苹果问题_蓝桥杯--算法提高--VIP--分苹果题目(差分数组)
- 无线鼠标没有反应(HID-compliant mouse)
- 不学C语言能直接学C++吗?
- HDU-2017 多校训练赛9-1005-FFF at Valentine
- 爱伦·坡:写作的哲学
- RestoreDet