吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

cupkee系統的編程操作

科技綠洲 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-06-22 11:41 ? 次閱讀

cupkee是一個C語言編寫,專門為嵌入式硬件設計的微型操作系統

http://www.cupkee.cn

cupkee提供類似node的運行環境,使用內嵌的javascript解釋器執行應用程序腳本。

cupkee在硬件上提供了REPL,開發者可以對硬件即時編程并獲得響應。

cupkee小巧、簡單。

關于cupkee的解釋器:

https://github.com/cupkee/panda

支持的處理器

  • stm32f103 (當前的BSP是按照stm32f103rc的資源定義實現的)

硬件編程

cupkee系統的編程非常簡單。

首先,將裝有cupkee系統的硬件通過USB連接到你的電腦

然后, 開始編程

使用REPL

cupkee使用USB-CDC作為console,當前主流桌面操作系統都可免驅識別。

打開串口終端,鍵入Enter將看cupkee的logo信息和命令提示符。

輸入js語句,cupkee會為你執行并返回結果

安裝應用腳本

cupkee正常連接到電腦后,會出現卷標為cupdisk的外掛硬盤。

寫好硬件應用腳本后,只需將其拖入此硬盤,即可完成安裝。

mac用戶

mac是非常方便的開發平臺,其上自帶的screen應用即可作為與cupkee的通信終端。(這是我在開發cupkee時的用法)

完整的連接過程如下:

  1. 用usb線連接cupkee板和mac
  2. 打開mac上的終端程序
  3. 在終端中輸入命令screen /dev/cu.usbmodemCUPKE1 baudrate (波特率可以隨便輸入)
  4. screen正常運行后,會清除終端的歷史內容,為用戶呈現一個干凈的新終端界面
  5. 鍵入Enter或其它任意,你將看到cupkee在終端中打印的logo,和輸入提示符

非mac用戶 或者不喜歡screen簡陋功能

你可以使用其它常用的應用軟件,如:putty,xshell,超級終端...

  • ubuntu12.04以上版本:無需驅動
  • windows10, windows8: 無需安裝驅動,連接即可使用

較老電腦操作系統不能直接識別usb cdc設備,使用前需安裝驅動程序。(不幸的是,目前沒有驅動程序)

cupkee使用簡介

完成上述操作,就可以開始進行硬件編程了。

使用解釋器

  • 進行簡單的計算
> 100 / 20 + 2
7
 >
  • 定義和使用變量
> var a = 1, b = 2;
undefined
 > a
1
 > a + b
3
 > a = "hello"
"hello"
 > b = "world"
"world"
 > a + " " + b
"hello world"
  • 定義和使用函數
> function fn(x, y) {
.   return x + y
. }
< function >
> fn(a, b)
3

操作硬件

  • 控制指示燈
led(1)              // 設置led引腳為高電平
led(0)              // 設置led引腳為低電平
led()               // 反轉led引腳電平
  • 操作GPIO
pinMap(0, 0, 1)     // 將GPIO引腳PA1,映射為PIN0
pinMap(1, 0, 2)     // 將GPIO引腳PA2,映射為PIN1

var pin = Device('pin', 0) // 申請pin設備實例0

pin.config('num',   2)
pin.config('start', 1)     // 設置pin設備管理的引腳: PIN0, PIN1
pin.config('dir', 'in')    // 設置pin方向: 輸入(in),輸出(out),雙向(dual)

pin.enable()

// 讀取pin引腳值
pin.get()                 // PIN0 PIN1
pin.get(0)                // PIN1
pin.get(1)                // PIN2
pin[0]                    // PIN1
pin[1]                    // PIN2

pin.listen('data', function(state) {   // 注冊引腳電平變化處理函數
  if (state[0]) led()
})
  • 操作設備(pwm, uart, i2c, adc, timer, counter, pulse)
var pwm = Device('pwm', 0) // 申請pwm設備實例0
...
// 設置pwm周期為1000ms
pwm.config('period', 1000)
// 使能pwm
pwm.enable()
...
pwm.write(0, 10)           // 設置pwm通道0占空比為10:990
pwm.write(0, 1000)         // 設置pwm通道0占空比為1000:0


...

更多信息, 請參考后續介紹及cupkee函數及設備手冊

cupkee提供的原生函數

cupkee提供了一組原生函數供開發者使用

  • print

print函數被設計為一個即時幫助工具,它可以用來打印變量的內容,和當前cupkee支持的原生函數

cupkee內建有系統定時器,每秒1000次滴答(每毫秒一次),作為系統程序的通用同步工具。

systicks函數返回系統啟動后的總滴答數。

> while(1) {
    if (systicks() > 10000) {
        ...
        break;
    }
}
  • ledMap & led

點亮指示燈是硬件調整最基本的手段,cupkee為此專門提供了ledMap和led兩個原生函數進行支持。

ledMap 用于指定指示燈使用的GPIO引腳。

led 用于控制指示燈引腳電平:1. 不帶參數調用時,反轉引腳電平 2. 傳入真值(1, true, ...)時,引腳設為高電平 3. 傳入假值(0, false, ...)時,引腳設為低電平

  • pinMap & pin設備

采用相同處理器的不同的硬件板卡的引腳使用方案,往往并不同。cupkee需要一種處理機制,讓一個處理器的固件程序支持多種板卡。

原生函數pinMap就是為此而來,它可以將任意GPIO引腳映射到cupkee內建的抽象PIN[0-15]。PIN0-15]可以分配給pin設備使用。

  • setTimeout, setInterval, clearTimeout, clearInterval

cupkee提供了一組定時器函數,它們相對于使用systicks管理程序同步更加有效

  1. setTimeout
    注冊延時(回調)函數,在指定時間后執行
  2. setInveral
    注冊周期(回調)函數,以指定的時間間隔周期執行
  3. clearTimeout
    清除延時函數
  4. clearInterval
    清除周期函數
// 定義函數f1,并在1000毫秒后執行
var t = setTimeout(def f1() {
    ...
}, 1000)
...
// 定義函數f2,每1000毫秒執行一次
var i = setInterval(def f2() {
    ...
}, 1000)
...
// 清除延時函數, 參數為setTimeout的返回值
clearTimeout(t)
...
// 清除周期函數, 參數為setInterval的返回值
clearInterval(t)
...
// 清除所有延時函數
clearTimeout()
...
// 清除所有周期函數
clearInterval()

cupkee上的設備

原生函數Device用來創建和查看可用設備。

> Device()              // 打印設備列表
Device id conf inst
* pin   0    3    2
* adc   0    3    2
...
undefined
>
> var pwm, key, adc
> pwm = Device('pwm', 1) // 申請pwm設備實例1
> key = Device('pin', 1) // 申請pin設備實例1
> adc = Device('adc', 0) // 申請adc設備實例0
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5092

    文章

    19177

    瀏覽量

    307650
  • 操作系統
    +關注

    關注

    37

    文章

    6892

    瀏覽量

    123742
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93981
收藏 人收藏

    評論

    相關推薦

    Linux操作系統C語言編程入門

    Linux操作系統C語言編程入門
    發表于 08-26 20:43

    編程用什么操作系統

    操作系統編程語言
    小凡
    發布于 :2022年09月08日 13:46:13

    基于操作系統編程與裸機編程有哪些不同之處

    因為學的是控制,剛開始的時候玩的單片機比較多,單片機進行開發的一個重要的特點就是裸機編程。也就是說內核跑的完完全全是你的代碼。但是在操作系統編程就完全不一樣,因為你的程序大部分都在調用操作系
    發表于 11-22 07:37

    Linux操作系統-C語言編程入門-pdf

    Linux操作系統-C語言編程入門介紹在LINUX 下進行C 語言編程所需要的基礎知識.在這篇文章當中,我們將會學到以下內容:􀂄 源程序編譯􀂄 Makefile 的編寫􀂄 程
    發表于 12-08 09:55 ?193次下載
    Linux<b class='flag-5'>操作系統</b>-C語言<b class='flag-5'>編程</b>入門-pdf

    編程操作界面在SCADA系統中的應用

    編程操作界面在SCADA系統中的應用
    發表于 01-19 12:29 ?23次下載
    可<b class='flag-5'>編程</b><b class='flag-5'>操作</b>界面在SCADA<b class='flag-5'>系統</b>中的應用

    嵌入式操作系統Linux 中的串口應用編程

    針對嵌入式Linux操作系統的特點,分析在該系統下串行通信口編程控制的方法,總結程序設計的步驟; 在嵌入式Linux 系統上, 編寫控制程序, 成功地實現嵌入式
    發表于 05-14 14:34 ?28次下載

    FANUC_O系統操作編程說明書

    FANUC O系統操作編程說明書FANUC O系統操作編程說明書FANUC O
    發表于 06-15 10:58 ?13次下載

    SLPC可編程調節器的編程設計與操作

    SLPC可編程調節器的編程設計與操作
    發表于 12-11 23:15 ?0次下載

    基于Linux操作系統下C語言編程入門

    基于Linux操作系統下C語言編程入門
    發表于 10-27 15:36 ?11次下載
    基于Linux<b class='flag-5'>操作系統</b>下C語言<b class='flag-5'>編程</b>入門

    Linux操作系統下C語言編程入門.pdf

    Linux操作系統下C語言編程入門
    發表于 05-17 10:08 ?96次下載

    Linux操作系統實用教程之如何進行Linux系統下的編程管理

    本文檔的主要內容詳細介紹的是Linux操作系統實用教程之如何進行Linux系統下的編程管理主要內容包括了:1.inux編程環境及工具2 Linux高級語言
    發表于 11-01 10:51 ?5次下載
    Linux<b class='flag-5'>操作系統</b>實用教程之如何進行Linux<b class='flag-5'>系統</b>下的<b class='flag-5'>編程</b>管理

    操作系統是什么?計算機操作系統的詳細資料介紹

    操作系統是計算機學科的基礎課程,是理解計算機運行原理的重要基石,學習操作系統不僅能夠讓編程人員了解計算機運行邏輯而且還有助于培養編程“軟實力”,如果想真正在
    的頭像 發表于 02-04 12:24 ?1.7w次閱讀
    <b class='flag-5'>操作系統</b>是什么?計算機<b class='flag-5'>操作系統</b>的詳細資料介紹

    基于實時操作系統編程系統設計

    。基于實時操作系統編程可以大大縮短開發的周期,實時性也有足夠的保證。基于實時操作系統編程的代價之一是,增加了程序代碼的長度;代價之二是,需要較多的RAM空間,在不擴展片外存儲器的情況下,中低檔單片機是難以勝任的。另一方面,大部分中低檔應用
    的頭像 發表于 10-04 13:16 ?2771次閱讀
    基于實時<b class='flag-5'>操作系統</b>的<b class='flag-5'>編程</b><b class='flag-5'>系統</b>設計

    單片機編程操作系統綜述

    本文分為兩部分——“單片機編程篇”和“操作系統篇”。單片機編程篇主要介紹單片機的各種編程結構,及其實現方法。是在假設已經可以驅動單片機和各個模塊的前提下,討論如何整合和使用這些資源,以
    發表于 05-08 11:12 ?40次下載

    基于操作系統編程與裸機編程的區別

    因為學的是控制,剛開始的時候玩的單片機比較多,單片機進行開發的一個重要的特點就是裸機編程。也就是說內核跑的完完全全是你的代碼。但是在操作系統編程就完全不一樣,因為你的程序大部分都在調用操作系
    發表于 11-13 17:36 ?11次下載
    基于<b class='flag-5'>操作系統編程</b>與裸機<b class='flag-5'>編程</b>的區別
    实战百家乐的玩法技巧和规则 | 百家乐官网视频打麻将| 凯旋门百家乐现金网| 永靖县| 网上百家乐有没有假| 阳泉市| 百家乐五湖四海娱乐| 百家乐官网闲9点| 大发888体育在线| 百家乐官网庄牌| 太阳城开户| 菲律宾百家乐娱乐平台| 百家乐官网赢钱公式1| 百家乐园能贷款吗| 娱乐百家乐官网的玩法技巧和规则 | 金钱豹百家乐官网的玩法技巧和规则| 云博备用网| gt百家乐平台假吗| 366百家乐官网赌博| 大发888中文版| 老牌百家乐娱乐城| 泷泽罗拉种子| 去澳门百家乐的玩法技巧和规则 | 百家乐官网必赢法软件| 老虎机批发| 阴宅24山水口吉凶断| 百家乐官网另类投注法| 新太阳城娱乐城| 百家乐试玩活动| 百家乐官网路单免费下载| 百家乐官网玩法与规则| 百家乐有赢钱公式吗| 上饶市| 百家乐真人游戏攻略| 百家乐官网分路单析器| 百家乐扑克多少张| 澳门百家乐官网下注最低| 凱旋门百家乐的玩法技巧和规则| 百家乐官网赌场凯时娱乐| 百家乐官网西园二手房| 大发888登录器下载|