101-CH579M学习开发-基本外设-定时器
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH579M" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
说明
先看一下默认的优先级
什么是定时器?定时器具体是怎么到了时间进去中断的?
定时器里面是啥?就是个计数器.定时器的时钟,就是计数器的时钟.假设计数器的时钟是1Hz
假设设置了计数器计数到1的时候就进入中断,那么就是每隔1S进入中断了.
假设计数器的时钟是32MHz,我想每隔1ms进入一次中断,我应该设置计数值是多少呢???
计数器记一次是 1/32000000 秒 1/32000 毫秒
需要多少个 1/32000 毫秒 才能到1ms呢? 1/(1/32000) = 32000
定时多少毫秒,设置初值可以写成 X*32000 X就是要定时的ms数
一次性解决战斗
int main() { /*ÅäÖô®¿Ú1*/ GPIOA_SetBits(GPIO_Pin_9); GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-ÅäÖÃÉÏÀÊäÈë GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);// TXD-ÅäÖÃÍÆÍìÊä³ö£¬×¢ÒâÏÈÈÃIO¿ÚÊä³ö¸ßµçƽ UART1_DefInit(); /*ÅäÖö¨Ê±Æ÷0,¶¨Ê±Æ÷µÄʱÖÓÊÇFREQ_SYS*/ TMR0_TimerInit( 10*(FREQ_SYS/1000) ); //¶¨Ê±10ms TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END); //ʹÄܶ¨Ê±Æ÷ÖÜÆÚÖÐ¶Ï NVIC_SetPriority(TMR0_IRQn,18);//ÉèÖÃÖжÏÓÅÏȼ¶(Ò²¿ÉÒÔ²»ÉèÖÃ,ĬÈÏ3) NVIC_EnableIRQ( TMR0_IRQn ); while(1) { } } /*TMR0ÖÜÆÚÖжÏ*/ void TMR0_IRQHandler( void ) { if( TMR0_GetITFlag( TMR0_3_IT_CYC_END ) ) { TMR0_ClearITFlag( TMR0_3_IT_CYC_END ); PRINT("1\r\n");//´òÓ¡Òý½Å״̬ } }
分类:
CH579M学习开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-07-19 1-移远GSM/GPRS M26 模块 Mini板 开发板(使用说明)
2018-07-19 5-(基础入门篇)学会刷Wi-Fi模块固件(刷LUA版本固件)