Firefly开源社区

12
发表新贴

【GoRK3288】5.PWM操作方法

643

积分

23

威望

20

贡献

技术大神

Rank: 3Rank: 3

积分
643

突出贡献

发表于 2015-5-12 09:22:07     
     请先在https://github.com/tjCFeng/GoRK3288下载 GoRK3288 开源库


    这一节来看看PWM的操作方法。前面说到了GPIO7_A1是个复用端口,包括GPIO和PWM,那么这次还是使用这个端口把它变成PWM输出。
    还是来看这张图

psb.png

    可以发现PWM在前,GPIO在后,也就是说默认的功能为PWM。如果想使用PWM功能的话,上电后可以直接使用了。不过为了能更加清楚的说明它是个复用端口,可以在上一节作为GPIO使用后,不要断电或重启,可以重新配置为PWM功能再来使用,其他端口不论默认功能是什么,都是一样的操作方法。

    再来看Test.go中的示例代码
QQ截图20150512082520.png

    即便当前是GPIO功能,也可以直接初始化为PWM的端口。在初始化时,可以不需要考虑端口,直接给定PWM的通道就可以了。因为手册是已经标明PWM1对应的就是GPIO7_A1。至于它到底是PWM还是GPIO,是通过Create类型来决定的,并且类中已经自动配置了复用设置寄存器,对用户完全透明,不用再去关心。
    这个示例代码比较全,实际在使用时,如果不打算做太多的设置,可以直接指定周期和占空比,再用Start和Stop来控制启停,在不使用时别忘了释放端口。
    同理,可以初始化其他的PWM来使用,如RK3288.PWM_2、
RK3288.PWM_3等。不过PWM4不要使用,它已经被系统使用了,强行使用它会造成系统紊乱,需要重启系统恢复,有兴趣可以试一下:-)

    需要注意的是,Start()开启的是一个协程,也就是说启动PWM后程序不会阻塞在Start()语句上,可以在PWM输出的时候继续执行其他的代码,互不影响。

    还是使用上一节的测试方法,继续使用那个小板。这上面既有LED,也有蜂鸣器,都可以通过PWM来驱动
psb.jpg

    启动PWM后可以看到LED的闪烁或蜂鸣器的声音,不过这些都是动态的,没办法抓拍,就不放出照片了。
   
最后总结一下PWM类的方法:
    CreatePWM:初始化PWM端口,需要指定通道
    FreePWM:释放PWM
    GetState:获取当前PWM是否已经启动
    GetCNT:获取当前PWM的计数器
    GetPERIOD:获取当前PWM被设置的周期数
    GetDUTY:获取当前PWM的占空比周期数(不是百分比)
    SetCNT:设置计数器,启动PWM之前最好设置为0
    SetPERIOD:设置周期数
    SetDUTY:设置占空比周期数
    SetInactivePolarity:设置PWM启动时是高电平还是低电平
    SetDutyPolarity:设置占空比的高低电平
    Start:启动PWM
    Stop:停止PWM

   
GoRK3288库请在https://github.com/tjCFeng/GoRK3288下载。

回复

使用道具 举报

37

积分

0

威望

0

贡献

游客

积分
37
发表于 2015-5-12 17:34:26     
你好,请问这些开源库是怎样使用的?
楼主有没有相关教程,新手。。。。。。。。。。。。。。。
回复

使用道具 举报

643

积分

23

威望

20

贡献

技术大神

Rank: 3Rank: 3

积分
643

突出贡献

发表于 2015-5-12 17:53:12     
BiscuitET 发表于 2015-5-12 17:34
你好,请问这些开源库是怎样使用的?
楼主有没有相关教程,新手。。。。。。。。。。。。。。。

这个就是教程了,如果不想使用go来安装包,也可以到github上把RK3288的文件下到本地直接调用。
建议先大概的了解一下go语言的开发环境,很简单的。
如果有什么问题发帖子或邮件什么的都可以。
回复

使用道具 举报

37

积分

0

威望

0

贡献

游客

积分
37
发表于 2015-5-12 23:14:53     
tjCFeng 发表于 2015-5-12 17:53
这个就是教程了,如果不想使用go来安装包,也可以到github上把RK3288的文件下到本地直接调用。
建议先大 ...

好的,非常感谢。:handshake
回复

使用道具 举报

643

积分

23

威望

20

贡献

技术大神

Rank: 3Rank: 3

积分
643

突出贡献

发表于 2015-5-13 05:08:37     
BiscuitET 发表于 2015-5-12 23:14
好的,非常感谢。

不客气,一个人的能力有限,希望大家一起开发:handshake
回复

使用道具 举报

14

积分

0

威望

0

贡献

游客

积分
14
发表于 2015-12-18 10:20:08     
可以问一下,你的这个开发包里对于GPIO的复用,除了PWM,UART串口有复用吗?大概怎么使用的?
回复

使用道具 举报

643

积分

23

威望

20

贡献

技术大神

Rank: 3Rank: 3

积分
643

突出贡献

发表于 2016-2-12 20:25:30     
请看GoRK3288.go,有例子。
回复

使用道具 举报

15

积分

0

威望

0

贡献

游客

积分
15
发表于 2016-5-23 02:53:14     
运行出现这个错误,求助
panic runtime error invalid memory address or nil pointer dereference
error.PNG
回复

使用道具 举报

发表于 2016-5-23 10:46:22     
116854423 发表于 2016-5-23 02:53
运行出现这个错误,求助
panic runtime error invalid memory address or nil pointer dereference

GO 语言的不太熟悉,楼主可以试试在android下开发http://wiki.t-firefly.com/index.php/%E9%A6%96%E9%A1%B5
暴走的创客!
回复

使用道具 举报

643

积分

23

威望

20

贡献

技术大神

Rank: 3Rank: 3

积分
643

突出贡献

发表于 2016-5-23 12:48:57     
运行时是用root权限吗?或者加sudo。
回复

使用道具 举报

返回列表
12

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表