你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8S003如何提高IO翻转速度

[复制链接]
Monster920728 提问时间:2018-1-23 15:14 /
本帖最后由 Inc_brza 于 2018-1-23 16:51 编辑


        现在项目里用的是STM8S003,PC5接的芯片MCLKIN,
MCLKIN范围要达到500k-5M,现在程序达不到,请各位大神支支招

收藏 评论8 发布时间:2018-1-23 15:14

举报

8个回答
hxydj 回答时间:2018-1-23 15:19:09
不清楚你说的程序达不到是什么意思?是PC5口要捕获500K--5M的信号,还是程序速度太慢,我自己测试PWM输出时,频率达到1M输出波形就会失真,这和单片机的晶振频率还有程序执行流程有关,可以接个示波器看看波形。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

Inc_brza 回答时间:2018-1-23 16:53:21
楼主,替你该了一下标题,请注意以后问问题先自己总结一下问题~
stm8在8M的时钟下,IO反转速度我测过最高能达到3M多,窍门在于,取消用库函数去
操作IO,用寄存器的方式直接反转IO即可!

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

七哥 回答时间:2018-1-23 17:29:18
从你的意思来看,PC5输出到外部芯片的MCLKIN输入脚,你是想提高PC5输出的翻转速度。
如楼上所述,要想提高翻转速度,必须直接寄存器操作。并且尽可能减少循环控制,即减小使用while的机会。
不要舍不得占用点ROM资源。PC5 置0,置1,置0,置1,……置0,置1,置0,置1,若干次。
while(1)
{
    PC5 置0;
    PC5 置1;
    PC5 置0;
    PC5 置1;
    PC5 置0;
    PC5 置1;
    ……
    …… N多次操作
    ……
    PC5 置0;
    PC5 置1;
}

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

wenyangzeng 回答时间:2018-1-23 17:42:28
至少你的系统时钟要配置到STM8S003的最高频率16MHZ.

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

黑夜之狼 回答时间:2018-1-24 09:41:35
要速度就得用寄存器操作,另外,LZ现在的系统时钟是多少M?

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

MrJiu 回答时间:2018-2-1 11:35:50
这个问题太笼统了。。。是要捕捉,还是PWM,还是自己程序的IO口翻转,首先高速翻转,IO的设置就有要求。。。其次,肯定使用寄存器直接操作了。。。还有就是需要计算好时间,比如捕捉,捕捉超过1M的信号频率估计很难,因为晶振最快运行速度就是16M,捕捉需要出栈,进栈也需要耗时,所以捕捉可行的应该在100K的频率为合适,至于PWM,好像可以达到很高,可以根据计算来参考!!!

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

Johnson Cao 回答时间:2018-2-8 10:04:09
如果是当CLK用,建议用PWM输出.信号稳定,频率高.用IO操作,信号一致性不行.

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

robter 回答时间:2018-2-11 12:16:15
寄存器操作IO的速度还是很快的,我习惯用

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版