DSP28335串列埠使用(查詢發,中斷收)
//串列埠BGPIO初始化
void InitSciB()
{
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pull-up for GPIO62 (SCITXDB)
GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pull-up for GPIO63 (SCIRXDB)
GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; // Asynch input GPIO19 (SCITXDB)
GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // Asynch input GPIO23 (SCIRXDB)
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2; // Configure GPIO19 for SCITXDB operation
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2; // Configure GPIO23 for SCIRXDB operation
EDIS;
ScibRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback,No parity,8 char bits,async mode, idle-line protoco
ScibRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
ScibRegs.SCICTL2.all =0x0003; //接收中斷使能
ScibRegs.SCICTL2.bit.RXBKINTENA =1;
#if (CPU_FRQ_150MHZ)
#if(BUADRATE_9600) //設定波特率
ScibRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.
ScibRegs.SCILBAUD =0x00E7;
#endif
#if(BUADRATE_115200)
ScibRegs.SCIHBAUD =0x0000; // 115200 baud @LSPCLK = 37.5MHz.
ScibRegs.SCILBAUD =0x0028;
#endif
#endif
#if (CPU_FRQ_100MHZ)
ScibRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.
ScibRegs.SCILBAUD =0x0044;
#endif
// ScibRegs.SCIFFTX.all=0xC000; //FIFO功能使能
ScibRegs.SCIFFRX.all=0x0021; //接收FIFO的深度為最低的5位,此處設定為1,沒接受到一個字元都會產生接收中斷
// ScibRegs.SCIFFCT.all=0x00;
ScibRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
//ScibRegs.SCIFFRX.bit.RXFIFORESET=1; //復位接收FIFO
}
// Transmit a character from the SCI
void put_char(char a)
{
while (ScibRegs.SCICTL2.bit.TXRDY == 0);
ScibRegs.SCITXBUF=a;
}
void put_string(char * putchar)
{
while(*putchar!= 0x00)
{
put_char(*putchar++);
}
}
//串列埠B接收中斷
interrupt void SciB_RxInterIsr(void)
{
u8 res;
res = (ScibRegs.SCIRXBUF.all) & 0x00FF;
// put_char(res);
switch(res)
{
case '0': put_char('I'); break;
case '1': put_char(' '); break;
case '2': put_char('l'); break;
case '3': put_char('O'); break;
case '4': put_char('V'); break;
case '5': put_char('E'); break;
case '6': put_char(' '); break;
case '7': put_char('Y'); break;
case '8': put_char('O'); break;
case '9': put_char('U'); break;
default : break;
}
ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
ScibRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
相關推薦
DSP28335串列埠使用(查詢發,中斷收)
//串列埠BGPIO初始化 void InitSciB() { EALLOW; GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pull-up for GPIO62 (SCITXDB) GpioCtrlRegs.GPAPUD.bit.GP
在linux上寫好串列埠程式後,利用windows上的串列埠除錯助手互發資料
我是用QT4在Linux上寫的串列埠程式,具體的程式碼就不寫了,網上搜一下很多。這裡主要說一下寫完程式碼之後,之前也行。要做的事情。 1,使用命令在終端上檢視有哪些串列埠驅動。 可以看出ttyS0 ttyS1能用 .一般ttyS0指com1,ttyS1指co
解決Linux串列埠查詢一次只能返回8位的問題
問題描述: 專案中有定時查詢感測器並將查詢到的資料記錄下來的需要,在做的時候發現通過whlie迴圈配合select監測串列埠上的資料,然後將資料儲存在陣列的過程中,read函式的第三個引數即選擇讀取的位元組數,在大於8的情況下返回的個數仍然為8,而感測器返回的資料包一般都是十幾位,無法一
[轉]web串列埠除錯助手,瀏覽器控制串列埠裝置
本文轉自:https://blog.csdn.net/ldevs/article/details/39664697 開啟串列埠時查詢可用串列埠供選擇 通過javascript呼叫activex控制串列埠收發資料,可以通過輪詢每個串列埠狀態找到指定的裝置,簡化使用者操作 選擇並開啟串列埠
串列埠通訊中,解決serialport.DataReceived接收到的資料不完整
private SerialPort serialport = new SerialPort(); private StringBuilder builder = new StringBuilder(); // private String
STM32F10在iap和app模式下,除錯模式串列埠可以通訊,下載後卻不能通訊的問題
開發環境:iar for arm ,開發晶片是STM32F103, 問題點:在除錯模式下,usart1可以接受和傳送資料,但是下載到晶片內部時,或者使用iap升級之後就出現資料無法接受的問題。 第一就像想到的啟動檔案和中斷向量表沒有配置好: 如圖所示:ICF配置 對比之
Linux/Android系統開發 串列埠驅動原始碼,FIFO模式
該驅動適用於採用linux和android系統平臺的C/C++串列埠開發。 FIFO傳送模式:建立資料傳送FIFO佇列,在多工資料傳送情境下,既能保證資料傳送任務能夠得到執行,又可解決資料傳送衝突問題。 select接收資料:有效監聽串列埠接收資料,提高執行效率,減少出錯
ubuntu中繫結USB串列埠的方法,包括同一型號的USB串列埠
udev是通過核心產生裝置名增加別名的方式來達到 不管裝置連線的順序而維持一個統一的裝置名。核心通常會產生自定義的裝置名,如sda1、sdb1等,但是udev可以通過裝置的其他資訊如匯流排 ,生產商等不同來區分不同的硬體裝置。在/etc的 目錄下。 例如 :ubuntu核心中,產生sda 裝置名
QT第三方串列埠類Win_QextSerialPort,串列埠工具插拔後無法繼續使用問題
if(myCom!=NULL){ myCom->close(); myCom->setParent(NULL); delete myCom; myCom=NULL; } myCom =
安卓通過串列埠獲得資料,步驟
1、複製jni資料夾 2、複製lib資料夾 3、複製android_serialport_api 資料夾 4、修改 manifest檔案 <application android:name="android_serialport_api.sample.Appli
Qt--串列埠接收資料,自定義碼流
串列埠通訊,傳送的資料沒有打包成固定碼流,所有需要對接收的資料加以判斷。 解決串列埠接收不完整的方法有3種: 一:判斷接收的資料,是不是自己定義的字元格式。 二:判斷接收的資料包大小,是不是自己定義的資料包的大小。 三:以多執行緒的方式,執行緒一直接收,資料獨立處理,此方法
VS 串列埠通訊SerialPort,官方demo
網上有很多解決方案: 主流大概三種: 1、使用mscomm控制元件,是微軟以前提供的控制元件,現在已經放棄了。當然在vs中可以手動整合這個控制元件,也能使用,但是需要註冊。 2、自己程式設計實現串列埠通訊(這個以後有時間寫個部落格) 3、使用.net framework 中
一個串列埠通訊程式,適用於3g模組傳送簡單AT指令
原始碼如下: #include <stdio.h> #include <string.h> #include <sys/types.h> #include <errno.h> #include <sys
MATLAB利用串列埠接收資料,並實時顯示圖形
matlab讀取串列埠資源總結:一、matlab讀取串列埠資料,並顯示實時圖形:點選這裡開啟二、使用matlab進行串列埠除錯的2中方法:點這裡開啟三、matlab讀取微控制器串列埠資料並顯示出來(m語
STM32F407 串列埠程式設計USART1,USART2,USART3,UART4
串列埠設定的一般步驟可以總結為如下幾個步驟: 1) 串列埠時鐘使能,GPIO時鐘使能。 2) 設定引腳複用器對映:呼叫GPIO_PinAFConfig函式。 3) GPIO初始化設定:要設定模式為複用功能。 4) 串列埠引數初始化:設定波特率,字長,奇偶校驗
在嵌入式linux串列埠終端中,如何燒錄核心和上傳檔案?
開發嵌入式linux遇到一些沒有u盤或者網口的時候,怎麼更新核心?更新應用程式? 映像上傳 採用串列埠xmodem協議上傳,串列埠波特率為460800。開發板這裡首先要連線secureCRT,在c
利用STM32 的串列埠來發送和接收資料實驗
void uart_init(u32 bound){ //GPIO埠設定 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_Init
用串列埠控制kobuki, 繞過ROS系統
介紹: 下面所做的事情, 用串列埠來控制kobuki底座運動, 繞過ros系統, 首先測試一下串列埠命令是否可用 硬體裝置 kobuki: turtlebot的底座:kobuki usb連線: 用usb線將kobuki和電腦連線起來, 不是25針的介
web串列埠除錯助手,瀏覽器控制串列埠裝置
開啟串列埠時查詢可用串列埠供選擇 通過javascript呼叫activex控制串列埠收發資料,可以通過輪詢每個串列埠狀態找到指定的裝置,簡化使用者操作 選擇並開啟串列埠 function selcomport(){ if ($("#btnOpen").val() ==
ubuntn下串列埠工具minicom ,kermit的使用
串列埠是嵌入式開發使用最多的通訊方式,linux系統提供了一個串列埠工具minicom,可以完成複雜的串列埠通訊工作。 Ubuntu下也有這樣的串列埠通訊工具,比如Minicom,kermit。minicom比較通用,kermit比較好用。 1.minicom