welcom ! Handel home

2017年2月26日 星期日

[STM32F103 GPIO 定義說明]

[STM32F103 GPIO   定義說明]
void GPIO_Configuration(void)//初始化
{
    GPIO_InitTypeDef  GPIO_InitStructure; //定義了一個初始化的結構體變數,其中包括埠引腳,速度,模式,
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 ;
                         //GPIO_Pin_None;           //無管腳被選中
                         //GPIO_Pin_0 - GPIO_Pin_15;//選中管腳 0-15
                         //GPIO_Pin_All;            //選中全部管腳
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出
                                 //GPIO_Mode_AIN;         //模擬輸入
                                 //GPIO_Mode_IN_FLOATING ;//浮空輸入
                                 //GPIO_Mode_IPD;         //下拉輸入
                                 //GPIO_Mode_IPU;         //上拉輸入
                                 //GPIO_Mode_Out_OD;      //開漏輸出
                                 //GPIO_Mode_Out_PP;      //推挽輸出
                                 //GPIO_Mode_AF_OD;       //複用開漏輸出 
                                 //GPIO_Mode_AF_PP;       //複用推挽輸出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
                                  //GPIO_Speed_10MHz; //最高輸出速率 10MHz 
                                  //GPIO_Speed_2MHz;  //最高輸出速率 2 MHz  
                                  //GPIO_Speed_50MHz; //最高輸出速率 50MHz  
    GPIO_Init(GPIOD, &GPIO_InitStructure);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
}

main()
{
    ReadValue = GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13);//讀取指定埠位
    ReadValue = GPIO_ReadInputData(GPIOC); //讀取指定的 GPIO埠輸入
    ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);//讀取指定埠管腳的輸出
    ReadValue = GPIO_ReadOutputData(GPIOC); //讀取指定的 GPIO埠輸出   
    GPIO_SetBits(GPIOD,GPIO_Pin_2|GPIO_Pin_4);         //設置指定數據埠位元
    GPIO_ResetBits(GPIOD,GPIO_Pin_2); //清除指定資料埠位元
    GPIO_WriteBit(GPIOD, GPIO_Pin_3, Bit_SET);//設置指定數據埠位元
    GPIO_WriteBit(GPIOD, GPIO_Pin_3, Bit_RESET);//清除指定資料埠位元
    GPIO_Write(GPIOD,0x0004);//指定GPIO口寫數據

}

2017年1月17日 星期二

Linux CentOS7 64bit install docker Note


$sudo yum update

When Centos 6 ,5  befer then Centos7 version install
$sudo yum install -y docker-io

Centos7 is ready install
$sudo yum install -y docker

# set docker power on auto startup server
$ sudo systemctl enable docker.service
# start run docker
$ sudo systemctl start docker

# test docker run
$ sudo docker run --rm hello-world




2017年1月8日 星期日

Docker命令查詢

Docker 包括三個基本概念
+

  • 映像檔(Image)
  • 容器(Container)
  • 倉庫(Repository)

Docker命令查詢

基本語法

docker [OPTIONS] COMMAND [arg...]
一般來說,Docker 命令可以用來管理 daemon,或者透過 CLI 命令管理映像檔和容器。可以透過 man docker 來查看這些命令。

選項

-D=true|false
    使用 debug 模式。預設為 false。

-H, --host=[unix:///var/run/docker.sock]: tcp://[host:port]來綁定或者 unix://[/path/to/socket] 來使用。
    在 daemon 模式下綁定的 socket,透過一個或多個 tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd 來指定。

--api-enable-cors=true|false
    在遠端 API 中啟用 CORS 頭。預設為 false。

-b=""
    將容器掛載到一個已存在的橋接器上。指定為 'none' 時則禁用容器的網路。

--bip=""
    讓動態建立的 docker0 採用指定的 CIDR 位址; 與 -b 選項互斥。

-d=true|false
    使用 daemon 模式。預設為 false。

--dns=""
    讓 Docker 使用指定的 DNS 伺服器。

-g=""
    指定 Docker 執行時的 root 路徑。預設為 /var/lib/docker。

--icc=true|false
    啟用容器間通信。預設為 true。

--ip=""
    綁定連接埠時候的預設 IP 位址。預設為 0.0.0.0。

--iptables=true|false
    禁止 Docker 新增 iptables 規則。預設為 true。

--mtu=VALUE
    指定容器網路的 mtu。預設為 1500。

-p=""
    指定 daemon 的 PID 檔案路徑。預設為 /var/run/docker.pid。

-s=""
    強制 Docker 執行時使用指定的儲存驅動。

-v=true|false
    輸出版本資訊並退出。預設值為 false。

--selinux-enabled=true|false
    啟用 SELinux 支援。預設值為 false。SELinux 目前不支援 BTRFS 儲存驅動。

命令

Docker 的命令可以採用 docker-CMD 或者 docker CMD 的方式執行。兩者一致。
docker-attach(1)
    依附到一個正在執行的容器中。

docker-build(1)
    從一個 Dockerfile 建立一個映像檔

docker-commit(1)
    從一個容器的修改中建立一個新的映像檔

docker-cp(1)
    從容器中複製檔案到宿主系統中

docker-diff(1)
    檢查一個容器檔案系統的修改

docker-events(1)
    從服務端取得實時的事件

docker-export(1)
    匯出容器內容為一個 tar 包

docker-history(1)
    顯示一個映像檔的歷史

docker-images(1)
    列出存在的映像檔

docker-import(1)
    匯入一個檔案(典型為 tar 包)路徑或目錄來建立一個映像檔

docker-info(1)
    顯示一些相關的系統資訊

docker-inspect(1)
    顯示一個容器的底層具體資訊。

docker-kill(1)
    關閉一個執行中的容器 (包括程式和所有資源)

docker-load(1)
    從一個 tar 包中載入一個映像檔

docker-login(1)
    註冊或登錄到一個 Docker 的倉庫伺服器

docker-logout(1)
    從 Docker 的倉庫伺服器登出

docker-logs(1)
    取得容器的 log 資訊

docker-pause(1)
    暫停一個容器中的所有程式

docker-port(1)
    查找一個 nat 到一個私有網口的公共口

docker-ps(1)
    列出容器

docker-pull(1)
    從一個Docker的倉庫伺服器下拉一個映像檔或倉庫

docker-push(1)
    將一個映像檔或者倉庫推送到一個 Docker 的註冊伺服器

docker-restart(1)
    重新啟動一個執行中的容器

docker-rm(1)
    刪除指定的數個容器

docker-rmi(1)
    刪除指定的數個映像檔

docker-run(1)
    建立一個新容器,並在其中執行指定命令

docker-save(1)
    保存一個映像檔為 tar 包檔案

docker-search(1)
    在 Docker index 中搜索一個映像檔

docker-start(1)
    啟動一個容器

docker-stop(1)
    終止一個執行中的容器

docker-tag(1)
    為一個映像檔打標籤

docker-top(1)
    查看一個容器中的正在執行的程式資訊

docker-unpause(1)
    將一個容器內所有的程式從暫停狀態中恢復

docker-version(1)
    輸出 Docker 的版本資訊

docker-wait(1)
    阻塞直到一個容器終止,然後輸出它的退出符

一張圖總結 Docker 的命令

命令周期

Docker 簡介

Docker by LXC(Linux Containers)
Docker 理解為一種 Applice or Server 套件的 Sandbox , 每一個 Container 都安裝執行一種應用 , Contain 間可以建立溝通 , Containers 啟動 停止都很快 對本機資源要求不高 遠低於 VM ,實際應用實 直接把Container 當成應用軟體執行也可以!
這樣帶來以下優勢
>>快速部屬和派送:
>>更高效率資源應用
>>用容易搬遷和擴展
>>用易更新


 在 LXC 的基礎上 Docker 進行了進一步的封裝,讓使用者不需要去關心容器的管理,使得操作更為簡便。使用者操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。
下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在作業系統層面上實作虛擬化,直接使用本地主機的作業系統,而傳統方式則是在硬體層面實作。
傳統虛擬化
Docker