189 8069 5689

go语言控制硬件 go语言系统调用

【原创】树莓派3B开发Go语言(四)-自写库实现pwm输出

在前一小节中介绍了点亮第一个LED灯,这里我们准备进阶尝试下,输出第一段PWM波形。(PWM也就是脉宽调制,一种可调占空比的技术,得到的效果就是:如果用示波器测量引脚会发现有方波输出,而且高电平、低电平的时间是可调的。)

创新互联于2013年开始,是专业互联网技术服务公司,拥有项目网站建设、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元娄底做网站,已为上家服务,为娄底各地企业和个人服务,联系电话:18982081108

这里爪爪熊准备写成一个golang的库,并开源到github上,后续更新将直接更新到github中,如果你有兴趣可以和我联系。 github.com/dpawsbear/bear_rpi_go

我在很多的教程中都看到说树莓派的PWM(硬件)只有一个GPIO能够输出,就是 GPIO1 。这可是不小的打击,因为我想使用至少四个 PWM ,还是不死心,想通过硬件手册上找寻蛛丝马迹,看看究竟怎么回事。

手册上找寻东西稍等下讲述,这里先提供一种方法测试 树莓派3B 的 PWM 方法:用指令控制硬件PWM。

这里通过指令的方式掌握了基本的pwm设置技巧,决定去翻一下手册看看到底PWM怎么回事,这里因为没有 BCM2837 的手册,根据之前文章引用官网所说, BCM2835 和 BCM2837 应该是一样的。这里我们直接翻阅 BCM2835 的手册,直接找到 PWM 章节。找到了如下图:

图中可以看到在博通的命名规则中 GPIO 12、13、18、19、40、41、45、52、53 均可以作为PWM输出。但是只有两路PWM0 PWM1。根据我之前所学知识,不出意外应该是PWM0 和 PWM1可以输出不一样的占空比,但是频率应该是一样的。因为没有示波器,暂时不好测试。先找到下面对应图:

根据以上两个图对比可以发现如下规律:

对照上面的表可以看出从 BCM2837 中印出来的能够使用在PWM上的就这几个了。

为了验证个人猜想是否正确,这里先直接使用指令的模式,模拟配置下是否能够正常输出。

通过上面一系列指令模拟发现,(GPIO1、GPIO26)、(GPIO23、GPIO24)是绑定在一起的,调节任意一个,另外一个也会发生变化。也即是PWM0、PWM1虽然输出了两路,可以理解成两路其实都是连在一个输出口上。这里由于没有示波器或者逻辑分析仪这类设备(仅有一个LED灯),所以测试很简陋,下一步是使用示波器这类东西对频率以及信号稳定性进行下测试。

小节:树莓派具有四路硬件输出PWM能力,但是四路中只能输出两个独立(占空比独立)的PWM,同时四路输出的频率均是恒定的。

上面大概了解清楚了树莓派3B的PWM结构,接下来就是探究如何使用Go语言进行设置。

因为拿到了手册,这里我想直接操作寄存器的方式进行设置,也是顺便学习下Go语言处理寄存器的过程。首先需要拿到pwm 系列寄存器的基地址,但是翻了一圈手册,发现只有偏移,没有找到基地址。

经过了一段时间的努力后,决定写一个 树莓派3B golang包开源放在github上,只需要写相关程序进行调用就可以了,以下是相关demo(pwm)(在GPIO.12 上输出PWM波,放上LED灯会有呼吸灯的效果,具体多少频率还没有进行测试)

以下是demo(pwm) 源码

Go语言编译器TinyGo,基于LLVM,在微控制器和小系统上编译和运行

TinyGo是一个为微控制器、WebAssembly(Wasm)和命令行工具等小型场景设计的Go语言编译器。TinyGo重用了Go语言工具和LLVM使用的库,以编译用Go语言编写的程序。目前,该项目在GitHub上已经积累了10.1k的Star。

如下为一个示例程序,当运行在任何支持的带板载LED的主板上时,则会点亮内置LED。

上述程序可以在单片机、Adafruit ItsyBitsy M0微控制器或任何支持的带内置LED的板上进行编译和不需要修改的运行,只要设置正确的TinyGo编译器目标即可。例如,设置如下目标可以编译和点亮 单片机。

项目概述

TinyGo项目旨在将Go语言引入到具有单进程或核心的微控制器和小系统。TinyGo类似于emgo,但主要的区别在于作者想要保留Go内存模型。另一个区别在于TinyGo在内部使用LLVM,因而可以获得更小更高效的代码以及更高的灵活性。

创建TinyGo项目的初衷是,如果Python可以在微控制器上运行,Go语言当然也应该能够在更低级微设备上运行。

支持设备

你可以为微控制器、WebAssembly和Linux编译TinyGo程序。目前,TinyGo支持以下85种微处理器板。

更多技术细节请参阅原项目。

如何用got完成部件的转动

 

当前位置: Language Tips Columnist 专栏作家 津津乐道

万能动词“GET”的主要用法

中国日报网 2016-10-12 11:27

分享到

    

英语中,“GET”作动词时,它不仅内涵非常丰富,而且其用法颇为复杂。它是一个万能动词,备受英语人士青睐。关于GET的使用频率和语体风格,英国著名词汇专家皮尔索尔(J. Pearsall)女士在1998年出版的《新牛津英语词典》中特地指出:GET是五个最常用的英语动词之一,但它常用于非正式的口语或书面语中。为了叙述方便,下面从词性功能的角度,简要归纳一下GET的语义及语用特点,以便英语学习者能正确掌握这一万能动词的主要用法。

一、及物动词

及物动词get的用法很多,但在每种搭配中get的意义是不完全相同的。

1.用于get+sb(sth);意为“叫来某人(得到某物)”。例如:

Please go and get him. [请你去把他叫来。]

She got high marks in the final examination. [她在期末考试中得了高分。]

2.用于get+sb+sth/get+sth+for sb;意为“为某人弄到某物”。例如:

I'll get you a drink. [我去个你拿杯饮料来。]

Could you get a school timetable for me? [你能帮我弄张课程表吗?]

3.用于“get+名词+宾补”,该宾语补足语可以是:

1)不定式;意为“使……做……”(具有使役性)。例如:

You must get them to come here. [你必须让他们来这里。]

He couldn't get the car to start and went by bus. [他因无法发动车子,所以就乘公共汽车去。]

2)现在分词;意为“使……(开始)起来”或处于某种状态。例如:

What he said got us thinking. [他说话使我们思考起来。]

Can you get the machine running? [你能把这机器发动起来吗? ]

3)过去分词;其中的过去分词表示被动关系。例如:

We get our milk delivered. [我们订的牛奶送到了。]

You must get the work done by Friday. [你必须最迟在星期五以前把工作做完。]

值得注意的是,这种被动关系有时可能表示某种遭遇;这主要取决于过去分词的含义。例如:

He got his watch stolen. [他的手表被偷了。]

Ina got her fingers caught in the door. [艾娜的手指让门给夹住了。]

另外,“get sth done”和“have sth done”在语义及语用上都有区别;前者通常表示动作让别人完成,后者通常表示动作由自己完成。例如:

She got her hair cut yesterday. [她昨天剪了头发(别人剪的)。]

A week ago I had a hundred dollars saved. [一个星期前我节省了一百美元(自己省的)。]

4)形容词;意为“使……(变成某种状态)”。例如:

What he said got us angry. [他说的话让我们很生气。]

We've got everything ready. [我们已把一切都准备好了。]

二、不及物动词

不及物动词get的用法也很多,不同的搭配有不同的意义。

1.用于“get+形容词”;get相当于系动词,构成系表结构说明主语的状况、性质、特征等情况。例如:

She got sick. [她生病了。]

Please don't get angry. [请不要生气。]

值得一提的是,英国著名语法专家斯旺(M. Swan)先生在1980年出版的专著《实用英语惯用法》中指出:get不能与表示颜色的形容词构成系表结构。例如不说:

* Leaves get brown.

但可以把get改为go:Leaves go brown.[树叶变棕色。]

另外,get用进行时态来表示状态的改变。例如:

The weather is getting cold. [天气逐渐变冷。]

I'm getting very deaf, you know. [你知道,我的耳朵越来越聋了。]

用进行时态的get还可以与形容词的比较级连用,强调渐进过程。例如:

The things are getting worse. [事情变更糟了。]

Our life is getting better and better. [我们的生活是越来越好了。]

2.用于“get+副词”,表示位置的变换;其中一些已成为成语。例如:

Where did you get on? [你上哪儿去了?]

The news soon got abroad. [这消息很快就传开了。]

3.用于“get+不定式”(构成复合谓语),表示一种状态的变化。例如:

How did you get to be captain? [你怎么当上队长的?]

I'll never get to understand him. [我永远不会理解他。]

4.用于“get+现在分词”;这种用法主要见于美国英语。例如:

We'd better get going, I suppose. [我想我们最好赶紧动身。]

They got talking and didn't notice the time. [他们谈了起来并没有注意时间。]

5.用于“get+过去分词”;这时get表示的是相当于become(即系动词)的意思,后面的过去分词属形容词范畴(即形容词化的过去分词),作主语补语。例如:

He got very worried. [他变得很担心。]

She gets easily excited. [她很容易激动。]

三、助动词

get作为助动词,它与过去分词构成被动语态(即Get-Passive)。中国著名语言学家周海中先生在1990年发表的论文《Get-Passive研究》中指出:目前,Get-Passive的使用还没有Be-Passive那么广泛,一般限于口语和非正式书面语;然而,这一被动语态却有着用得愈来愈多的趋势,这种语言现象很值得我们重视和研究。

Get-Passive除了在形式和语体上与Be-Passive有区别外,在语义及语用上也有其特点。美国著名语言学家伯恩斯坦(T. Bernstein)先生在1981年出版的专著《注意你的语言》中认为:当强调状态时,最好使用Be-Passive;当强调动作时,最好使用Get-Passive。他给了一个颇有趣的例句:She has been married, so often you might think she enjoys just getting married, not being married.

Get-Passive明确地表示做出动作的时间,而Be-Passive则表示动作造成的状态的持续时限。例如:

At that time he was not yet married, but he got married in 1920. [当时他还没有结婚,但他在1920年结婚了。]

因为Get-Passive具有这一语义特点,所以以下一句不能成立:

* He got married a long time.

但我们可以说:He was married a long time. [他结婚很长时间了。]

就感情色彩而言, Get-Passive一般都有不利、不幸、不愉快或不如意的意义色彩;而Be-Passive可以表示褒义、贬义或中性意义。例如:

John got arrested by the police. [约翰被警察逮捕了。]

Mariah got dismissed from the service. [玛丽亚被解雇了。]

某些动词用于Get-Passive时,虽然在形式上是被动的,但在意义上却是主动的。例如:

We got started at noon. = We started at noon. [我们中午开始。]

Good-bye and write me as soon as you get settled. = Good-bye and write me as soon as you settle. [再见,你安顿下来后尽快给我写信。]

这类动词还有confuse[迷惑]、divorce[离婚]、dress[穿着]、engage[订婚]、lost[迷路]、marry[结婚]、wash[洗净]等。

最后一提的是,由动词get构成的成语,如get hell[受严厉处罚]、get hot[恼怒,生气]、get nowhere[无效,徒劳]、get out[出去,离开]、get rid of[摆脱,除去]、get through with[做完,办完]等就有近百条。这些成语既有字面意义,又有引申意义或比喻意义。它们是英语宝库中的明珠,其用法同样值得学习者掌握。

本文仅代表作者本人观点,与本网立场无关。欢迎大家讨论学术问题,尊重他人,禁止人身攻击和发布一切违反国家现行法律法规的内容。

(本文作者为英国牛津大学访问学者 林娜博士)

上一篇 : 《Madam Secretary》中的经典口语句型

下一篇 : 安全:到底是safety,还是security?

分享到

    

中国日报网英语点津版权说明:凡注明来源为“中国日报网英语点津:XXX(署名)”的原创作品,除与中国日报网签署英语点津内容授权协议的网站外,其他任何网站或单位未经允许不得非法盗链、转载和使用,违者必究。如需使用,请与010-84883561联系;凡本网注明“来源:XXX(非英语点津)”的作品,均转载自其它媒体,目的在于传播更多信息,其他媒体如需转载,请与稿件来源方联系,如产生任何问题与本网无关;本网所发布的歌曲、电影片段,版权归原作者所有,仅供学习与研究,如果侵权,请提供版权证明,以便尽快删除。

你可能还感兴趣的文章

川普推特撕X闯祸 美民众:你还是关了吧

《星球大战》粉丝要求把莱娅公主正式列入迪士尼公主

《单身日记3:好孕来袭》电影精讲(视频)

关于《神夏》你不知道的十件事


文章标题:go语言控制硬件 go语言系统调用
本文网址:http://jkwzsj.com/article/dohgghh.html

其他资讯