1. 程式人生 > >msp430F149串列埠UART結合舵機控制板來控制機器人動作的模版

msp430F149串列埠UART結合舵機控制板來控制機器人動作的模版

/*************************main()函式*********************/

#include <msp430x14x.h>
#include"uart.h"
#include"BoardConfig.h"

void delay(int xms)
{
  uint i,j;
  for( i=0;i<xms;i++)
  for(j=0;j<1141;j++);//
}

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;//關狗
  BoardConfig(0xb8);   //關數碼管,流水燈和電平轉換
 
  InitUart();
  _EINT();
 
  while(1)
  {
    PutString("#1P500#2P2056T2500\r\n");
    delay(1000);
    PutString("#1P1056#2P2056T2500\r\n");
    delay(1000);
    PutString("#1P1500#2P2056T2500\r\n");
    delay(1000);

    ..........//將你在軟體上生成的動作程式碼組按以上方式重複即可
  }
}
/***************************main()完********************************/

/**************************UART配置程式塊*************************/

#include<msp430x14x.h>

typedef unsigned char uchar;
typedef unsigned int  uint;

/************************************
函式名稱:InitUart()
功    能:初始化UART埠
參    數:無
返回值:無
************************************/
void InitUart(void)
{
  P3SEL |= BIT4 + BIT5;//開啟P3.4 3.5的第二功能作為收發管腳
  ME1 |= UTXE0 + URXE0;//開啟串列埠0收發模式
  UCTL0 |= CHAR;//8—bit模式
  UTCTL0 |= SSEL0;//選擇ACLK作為串列埠波特率的時鐘源
  UBR00 = 0X03;
  UBR10 = 0X00;
  UMCTL0 = 0X4A;//選擇波特率為9600
  UCTL0 &= ~SWRST;//取消軟體復位端
  
}
/******************完********************/
/*****************************************
函式名:Send1char()
功能:向pc機發送一個字元
引數:sendchar——要傳送的字元
返回值:無
*****************************************/
void Send1Char(uchar sendchar)
{
  while(!(IFG1 & UTXIFG0));//等待發送暫存器為空
  TXBUF0 = sendchar;
}
/***********************************************
函式名稱:putsting()
功能:向pc機發送字串並換行指令
引數:ptr——指向傳送字串的指標
返回值:無
***********************************************/
void PutString(uchar *ptr)
{
    while(*ptr != '\0')
    {
      Send1Char(*ptr++);  
    }  
}

/**************************UART配置程式塊完*************************/

/**************************程式模組化,外部宣告*************************/

typedef unsigned char uchar;
typedef unsigned int  uint;

void InitUart(void);
void PutString(uchar *ptr);
void Send1Char(uchar sendchar);

/**************************程式模組化,外部宣告  完*************************/

/***********************************由於用的是學習板,這部分是學習板的配置檔案,參考使用***********************/

//typedef unsigned char uchar;
//typedef unsigned int  uint;

//控制位的巨集定義
#define Ctrl_Out  P3DIR |= BIT3 + BIT6 + BIT7;
#define Ctrl_0    P3OUT &= ~(BIT3 + BIT6 + BIT7)
#define SRCLK_1   P3OUT |= BIT7
#define SRCLK_0   P3OUT &= ~BIT7
#define SER_1     P3OUT |= BIT6
#define SER_0     P3OUT &= ~BIT6
#define RCLK_1    P3OUT |= BIT3
#define RCLK_0    P3OUT &= ~BIT3

//板上資源配置函式
void BoardConfig(uchar cmd)
{
    uchar i;
   
    Ctrl_Out;
    Ctrl_0;
   
    for(i = 0; i < 8; i++)
    {
        SRCLK_0;
        if(cmd & 0x80)  SER_1;
        else            SER_0;
        SRCLK_1;
        cmd <<= 1;
    }
    RCLK_1;
    _NOP();
    RCLK_0;
}

相關推薦

msp430F149串列UART結合控制板控制機器人動作模版

/*************************main()函式*********************/ #include <msp430x14x.h> #include"uart.h" #include"BoardConfig.h" void dela

STM32單線串列對匯流排控制

1 匯流排舵機的介紹匯流排伺服舵機即序列匯流排智慧舵機,實際上可以理解為數字舵機的衍生品,數字舵機與模擬舵機相比而言是控制系統設計上的顛覆,而匯流排伺服舵機對於舵機而言則是在功能和運用上的顛覆。舵機的運用方式實際上只能發揮出匯流排伺服舵機非常小的一部分功能。這款TS-315是通過單線的串列埠通訊對旋轉進行控

[STM32F103]串列UART配置

l 串列埠時鐘使能,GPIO時鐘使能:   RCC_APB2PeriphClockCmd(); l 串列埠復位:   USART_DeInit(); 這一步不是必須的 l GPIO埠模式設定:   GPIO_Init(); l 串列埠引數初始化:   US

S3C2440裸機程式【2】串列uart程式

         學習ARM7晶片stm32時,裸機程式開發可以很方便的根據庫函式在工程模板上進行開發,而ARM9主要是移植Linux開發,很少有裸機程式開發,因此在玩S3C2440希望最終形成一個keil環境下的模板。用的淘寶上的JZ2440v

ARM串列(UART)的使用 (S3C2440)

UART概述 通用非同步收發器簡稱UART(Universal Asynchronous Receiver and Transmitter) 工作方式為:序列、全雙工。 只需3根線:TXD(傳送資料)、RXD(接收資料)、GND。 資料傳輸流程: 原來是高電平

模擬串列UART的實現

我所禱告的,就是要你們的愛心,在知識和見識上,多而又多,使你們能分辨是非,做誠實無過的人,直到基督的日子。——腓立比書【1:9~10】 最近在調的MCU的型號為STM32F030,配置晶片相較之前的MCU都比較簡單,功能配置很順利。但是在寫串列埠程式的時候,發現串列埠一直不通,使用示波器也沒有波形。因為基本

基於Arduino和python的串列通訊和上位控制

 引言 經常的時候我們要實現兩個程式碼之間的通訊,比如說兩個不同不同人寫的程式碼要對接,例如將python指令控制Arduino控制元件的開關,此處使用串列埠通訊是非常方便的,下面筆者將結合自己踩過的坑來講述下自己的學習經歷。 首先是挑戰杯審報的一個專案,即採用機器學習模型分類資料,結合Ardu

樹莓派3串列(UART)使用問題的解決方法!

根據官方的反饋和回覆,我們瞭解到樹莓派3上使用者目前無法正常是使用GPIO中的UART串列埠(GPIO14&GPIO15),也就是說使用者無論是想用串列埠來除錯樹莓派,還是想用GPIO中的串列埠來連線GPS,藍芽,XBEE等等串列埠外設目前都是有問題的。 原因是樹

通過串列UART登入樹莓派

背景 很多朋友因為了解到樹莓派的強大,所以都很快入手了一個準備把玩,可是通常買回後,發現自己沒有HDMI顯示器,即使有一個顯示器,也通常是VGA介面的,缺個VGA轉HDMI接頭。其實,沒有顯示器也還有辦法可以通過一臺主機(安裝有ssh或串列埠通訊的軟體)的命令

第011課 Jz2400串列(UART)的使用

第001節硬體知識_UART硬體介紹 1.串列埠的硬體介紹 UART的全稱是Universal Asynchronous Receiver and Transmitter,即非同步傳送和接收。 串列埠在嵌入式中用途非常的廣泛,主要的用途有: 列

[FAQ03891] 如何在User版本開啟串列(Uart),抓取上層Log,開啟輸入控制檯

FAQ Content [Description] 如何在User版本開啟串列埠(Uart),開啟輸入控制檯,抓取上層Log   [Keyword] User Uart Log Logcat 輸入 控制檯 串列埠   [Solution] (1) 如何在User版本中使用串

樹莓派3串列(UART)使用問題(板載藍芽和串列)!!

根據官方的反饋和回覆,我們瞭解到樹莓派3上使用者目前無法正常是使用GPIO中的UART串列埠(GPIO14&GPIO15),也就是說使用者無論是想用串列埠來除錯樹莓派,還是想用GPIO中的串列埠來連線GPS,藍芽,XBEE等等串列埠外設目前都是有問題的。 原因是樹莓派CPU內部有兩個串列埠,一個

樹莓派3b串列(UART)使用問題的解決方法!及關閉板載藍芽方法

        原因是樹莓派CPU內部有兩個串列埠,一個是硬體串列埠(官方稱為PL011 UART),一個是迷你串列埠(官方成為mini-uart)。在樹莓派2B/B+這些老版樹莓派上,官方設計時都是將“硬體串列埠”分配給GPIO的UART(GPIO14&GPIO15),因此可以獨立調整串列埠的速率

NUC140之串列UART

UART可以說是序列通訊用的最多的協議,相對其他協議也比較簡單,一般只要設定好位元率,資料位,停止位和校驗位即可。下面來看程式。 #include "UART.h"     #include <stdio.h> volatile static uint8

串列uart中斷方式和查詢方式的選擇以及高效實現(迴圈FIFO)

串列埠uart中斷方式和查詢方式的選擇以及高效實現 1. 中斷方式和查詢方式的選擇 (1) 串列埠中斷方式相比查詢方式效率要高。 串列埠傳輸速率比較慢。比如對於系統時鐘為100MHz的MCU,串列埠波特率為115200。傳輸一個位元組大概需要10000個時鐘週期,所以系統大部分的時間

樹莓派3B串列UART配置

樹莓派2017-11-29-raspbian-stretch-lite版本配置親測只需2步可以搞定1.   sudo systemctl disable hciuart禁用藍芽2.   sudo nano /boot/config.txt在最後加上一行dtoverlay=pi

OpenWRT 修改dts檔案配置串列uart ttyS0

串列埠需要修改dts檔案,在原始碼目錄的target/linux/ramips/dts目錄中,修改mt7620a.dtsi中的一些內容,修改內容如下: (1) chosen {            

藍芽串列透傳-從發送與接收(整理)

1、從機通過串列埠傳送資料給主機(Notification:character4) //simpleBLEPeripheral.c //串列埠回撥函式 static void NpiSerialCallback(uint8 port,uint8 event

最新 X210開發板刷(SD卡uboot、串列+USB-OTG刷方法)

一、介紹        九鼎的S5PV210開發板,在出廠前已經預設刷了Android4.0系統。如果需要刷其它的系統或者是由於系統問題無法啟動時,就需要對板子刷機。        其實,刷機是對210開發板的一個基礎學習,目的是實踐之前學過的系統啟動過程,進一步的瞭解系統的啟動過程,加深理解(uboot、

C#做一個簡單的進行串列通訊的上位

1、上位機與下位機         上位機相當於一個軟體系統,可以用於接收資料、控制資料。即可以對接收到的資料直接傳送操控命令來操作資料。上位機可以接收下位機的訊號。下位機是一個控制器,是直接控制裝置獲取裝置狀況的計算機。上位機發出的命令首先給下位機,下位機再根據此命令解釋成相應時序訊號直接控制相應裝置。下