0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用Lua编写计算ML51单片机PWM时钟源的程序?

Q4MP_gh_c472c21 来源:嵌入式ARM 作者:嵌入式ARM 2021-01-26 09:57 次阅读

比如你想生成的PWM的时钟信号频率为10K,然后你就可以利用10K的PWM时钟源计数生成周期为(1~4095)*(1/10000)的PWM波形了。

其实再次修改程序,你还可以计算PWM周期计数器与高电平相关的值。

目前提供Lua脚本的

function get(my)--这个是选择系统的时钟源,这里默认选择内置的24M时钟HIRC Fhirc=24000000--下面几个变量都是临时变量使用,初始化多少都行 CKDIV=0 Fsys=0 pre=1 Fpwm=0 i=0 for CKDIV=0,255 do for i=0,7 do pre=2^i if(CKDIV==0) then Fsys=Fhirc elseif((CKDIV>0)and(CKDIV<=0xFF)) then Fsys=Fhirc/(2*CKDIV) end Fpwm=Fsys/pre if(my==Fpwm) then print("pre="..pre.."CKDIV="..CKDIV) end end endend get(10000) 

37d916b0-5f63-11eb-8b86-12bb97331649.png

发现有两组参数可以满足需求
pre=16.0CKDIV=75
pre=8.0CKDIV=150

384e5d26-5f63-11eb-8b86-12bb97331649.png

CKDIV是这里,选择内部的RC振荡器后的分频

38bb5f48-5f63-11eb-8b86-12bb97331649.png

CKDIV = 75; PWM0_ClockSource(PWM_FSYS,16); 或者 CKDIV = 150; PWM0_ClockSource(PWM_FSYS,8);

function get(my)--这个是选择系统的时钟源,这里默认选择内置的24M时钟HIRC Fhirc=24000000--下面几个变量都是临时变量使用,初始化多少都行 CKDIV=0 Fsys=0 pre=1 Fpwm=0 i=0 for CKDIV=0,255 do for i=0,7 do pre=2^i if(CKDIV==0) then Fsys=Fhirc elseif((CKDIV>0)and(CKDIV<=0xFF)) then Fsys=Fhirc/(2*CKDIV) end Fpwm=Fsys/pre if(my==Fpwm) then print("PWM时钟频率为"..my.."Hz".." 需要设置".."pre="..pre..", CKDIV="..CKDIV) end end endend get(10000)print("-----------------------------------")get(15000)print("-----------------------------------")get(20000)  优化了一下显示形式,输出结果,可以看出为了达到某个结果,实际上可以通过多组分频组合实现。  

PWM时钟频率为10000Hz 需要设置pre=16.0, CKDIV=75PWM时钟频率为10000Hz 需要设置pre=8.0, CKDIV=150-----------------------------------PWM时钟频率为15000Hz 需要设置pre=32.0, CKDIV=25PWM时钟频率为15000Hz 需要设置pre=16.0, CKDIV=50PWM时钟频率为15000Hz 需要设置pre=8.0, CKDIV=100PWM时钟频率为15000Hz 需要设置pre=4.0, CKDIV=200-----------------------------------PWM时钟频率为20000Hz 需要设置pre=8.0, CKDIV=75PWM时钟频率为20000Hz 需要设置pre=4.0, CKDIV=150 END 本文系21ic论坛蓝V作者gaoyang9992006原创

原文标题:高手杂谈:用Lua编写计算ML51单片机PWM时钟源的程序

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6034

    文章

    44545

    浏览量

    634369
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5175

    浏览量

    213738
  • Lua
    Lua
    +关注

    关注

    0

    文章

    81

    浏览量

    10557

原文标题:高手杂谈:用Lua编写计算ML51单片机PWM时钟源的程序

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于51单片机的手动数字时钟

    具体实现功能由51单片机+8位共阴数码管+独立按键构成。具体功能:(1)利用数码管显示时分秒,显示格式为“时-分-秒”;(2)利用6个按键控制时、分、秒,设定好后自动开始时钟显示;(3)设置秒复位
    的头像 发表于 10-22 14:12 210次阅读
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b>的手动数字<b class='flag-5'>时钟</b>

    基于51单片机数字时钟数码管显示设计

    本资源内容概要:       这是基于51单片机数字时钟数码管显示设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单(exc
    发表于 06-25 10:42 1次下载

    基于51单片机数字时钟闹钟设计

    本资源内容概要:       这是基于51单片机数字时钟闹钟设计包含了PDF版本电路图、C语言程序源代码(keil软件打开)、proteus仿真。本资源适合人群:     
    发表于 06-25 10:17 0次下载

    基于51单片机时钟温度显示设计

    本资源内容概要:       这是基于51单片机时钟温度显示设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、proteus仿真图。本资源适合人群
    发表于 06-25 10:17 0次下载

    基于51单片机的实时时钟设计

    电子发烧友网站提供《基于51单片机的实时时钟设计.rar》资料免费下载
    发表于 01-12 10:43 13次下载

    基于51单片机PWM发生器设计

    电子发烧友网站提供《基于51单片机PWM发生器设计.rar》资料免费下载
    发表于 01-12 10:29 4次下载

    基于51单片机的实时时钟+温度应用设计

    电子发烧友网站提供《基于51单片机的实时时钟+温度应用设计.rar》资料免费下载
    发表于 01-12 10:20 0次下载

    基于51单片机的多功能电子时钟设计

    电子发烧友网站提供《基于51单片机的多功能电子时钟设计.rar》资料免费下载
    发表于 01-12 10:03 13次下载

    基于51单片机计算器设计

    电子发烧友网站提供《基于51单片机计算器设计.rar》资料免费下载
    发表于 01-12 09:17 39次下载

    基于51单片机PWM发生器设计

    电子发烧友网站提供《基于51单片机PWM发生器设计.rar》资料免费下载
    发表于 01-07 09:38 13次下载

    基于51单片机计算器设计

    电子发烧友网站提供《基于51单片机计算器设计.rar》资料免费下载
    发表于 01-03 11:33 21次下载

    基于51单片机的实时时钟设计

    电子发烧友网站提供《基于51单片机的实时时钟设计.rar》资料免费下载
    发表于 01-02 10:15 43次下载

    基于51单片机的实时时钟+温度应用设计

    基于51单片机的实时时钟+温度应用设计(仿真)
    发表于 01-02 09:55 6次下载

    基于51单片机的多功能电子时钟设计

    基于51单片机的多功能电子时钟设计(仿真)
    发表于 01-02 09:39 41次下载

    keil5mdk怎么编写51单片机程序

    编写51单片机程序需要以下步骤: 编写程序框架:首先,你需要定义程序所需要的变量和常量,以及设置
    的头像 发表于 12-25 14:54 1525次阅读