上海婦科疾病研究所 上海女性不孕醫(yī)院 上海引產(chǎn)醫(yī)院 無痛引產(chǎn)痛不痛 上海人流醫(yī)院 白癜風治療醫(yī)院 上海小兒腦癱醫(yī)院 上海女子醫(yī)院
yy玄幻小说排行榜完本,我欲封天txt下载

国产精品无码毛片AV_亚洲毛片精品在线_全球黄色短视频在线免费观看_亚洲一区二区爱av_成年人免费观看网址_欧美美女性爱喷水网址_亚洲毛片av无码不卡_国产无码视频在线观看_高清国语自产拍在线播放_女人午夜免费黄片

用戶名: 密碼:
主頁 設為首頁 加入收藏
      產(chǎn)品中心       技術中心       下載中心        社區(qū)新聞        誠聘英才       大學計劃        關于我們       技術論壇
  您的當前位置:ADSP開源社區(qū) >> 技術中心 >> Blackfin 今天是:
技術中心  
SigmaDSP
SHARC
A2B音頻總線
Blackfin
ADI操作系統(tǒng)
ADSP-218X
TigerSAHRC
ADI DSP仿真器
產(chǎn)品導航
ADI DSP仿真器
SigmaDSP開發(fā)板
ADI A2B總線開發(fā)板
SHARC DSP開發(fā)板
銷售網(wǎng)絡
Blackfin  
BF537的簡單串口驅動
[ 作者:OP ] [ 來源:ADSP開源社區(qū) ] [ 發(fā)布時間:2015-12-13 ]

首先從最簡單的串口驅動開始,下面是本人寫的最簡單的串口驅動,程序開始先是向串口發(fā)送一個固定的字符串,然后又鍵盤輸入字符,537收到之后返回響應的字符。

/*****************************************************************************
* uart.c    適用于blackfin537 ezkit平臺
*****************************************************************************/
#include <sysreg.h>
#include "ccblkfn.h"
#include "cdefBF537.h"  //寄存器映射的頭文件
//此程序是UART的驅動程序

#include <sys/exception.h>


void serial_putc(const char c)
{
/* send a /r for compatibility */
if (c == '/n')
  serial_putc('/r');

// WATCHDOG_RESET();

/* wait for the hardware fifo to clear up */
while (!(*pUART0_LSR & THRE))
  continue;

/* queue the character for transmission */
*pUART0_THR = c;
asm ("ssync;");

// WATCHDOG_RESET();

/* wait for the byte to be shifted over the line */
while (!(*pUART0_LSR & TEMT))
  continue;
}

EX_INTERRUPT_HANDLER(UART_ISR)
{
int data;
if(*pUART0_LSR&0x0001)
{
  data=*pUART0_RBR;
  if(data==0x0D)
  {
   *pUART0_THR=0x0A;
   asm("ssync;");
   while((*pUART0_LSR&0x0020)==0);
  }
  *pUART0_THR=data;
  asm("ssync;");
  while((*pUART0_LSR&0x0020)==0);
}
}

void init_interrupt(void)
{

asm("ssync;");
*pUART0_IER = 0x0001;    //Enabling Rx, Tx and error interrupts on UART0_IER.
asm("ssync;");
register_handler(ik_ivg10,UART_ISR);
*pSIC_IMASK|=0x0800;
asm("ssync;");
*pIMASK |= 0x00000400;
}

void init_port(void)
{
*pPORTF_FER |= 0x0003;
*pPORTF_FER |= 0x0003;
asm ("ssync;");
*pPORT_MUX &= ~0x0008;
*pPORT_MUX &= ~0x0008;
}
void init_uart(void)
{
*pUART0_GCTL=0x01;   //首先使能串口時鐘
*pUART0_LCR=0x03;  //8個數(shù)據(jù)位 1個停止位
asm ("ssync;");

//set baudrate
unsigned int divisor = (50000000 / (115200 * 16))+1;
*pUART0_LCR |= DLAB;
asm ("ssync;");
  /* Program the divisor to get the baud rate we want */
*pUART0_DLL = divisor;
asm ("ssync;");
*pUART0_DLH = divisor>>8;
*pUART0_LCR &= ~DLAB;
}

int main( void )
{
/* Begin adding your custom code here */
int i=0;
// *pEBIU_AMGCTL=0xff;
init_port();

init_uart();

init_interrupt();
char s=57;
for(i=0;i<10;i++)
{
  serial_putc(s);
}
while(1);

return 0;
}

聯(lián)系我們 | 關于我們 | 免責聲明 | 誠征英才 | 友情鏈接
Copyright 2019 All rights reserved  本網(wǎng)頁版權屬Open ADSP所有
北京海淀區(qū)中關村大街32號新中發(fā)市場3659 郵編100100
電話 18611096839 
粵ICP備14035876號-1