xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 10KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-17
  • 語言: 其他
  • 標簽: UART0??

資源簡介

ZYNQ7021在Linux下, 串口UART0的實現,可以在PS端直接使用,也可以將UART0引薦通過引腳分配帶EMIO上使用,測試效果可以查看我的博客。

資源截圖

代碼片段和文件信息

//串口相關的頭文件??
#include??????/*標準輸入輸出定義*/??
#include?????/*標準函數庫定義*/??
#include?????/*Unix?標準函數定義*/??
#include???
#include?????
#include??????/*文件控制定義*/??
#include????/*PPSIX?終端控制定義*/??
#include??????/*錯誤號定義*/??
#include??

#include?

#include?

//宏定義??
#define?FALSE??-1??
#define?TRUE???0??

/*******************************************************************?
*?名稱:????????????????UART0_Open
*?功能:????????????????打開串口并返回串口設備文件描述?
*?入口參數:?fd:文件描述符????port?:串口號(ttyPS0ttyPS1)
*?出口參數:?????????????正確返回為1,錯誤返回為0
*******************************************************************/??
int?UART0_Open(int?fdchar*?port)??
{??

????fd?=?open(?port?O_RDWR|O_NOCTTY|O_NDELAY);??//fd?=?-1

????if?(FALSE?==?fd)
????{
????????perror(“Can‘t?Open?Serial?Port“);
????????return(FALSE);
????}
????//恢復串口為阻塞狀態
????if(fcntl(fd?F_SETFL?0)?????{
????????printf(“fcntl?failed!\n“);
????????return(FALSE);
????}
????else
????{
????????printf(“fcntl=%d\n“fcntl(fd?F_SETFL0));
????}
????//測試是否為終端設備
????if(0?==?isatty(STDIN_FILENO))
????{
????????printf(“standard?input?is?not?a?terminal?device\n“);
????????return(FALSE);
????}
????else
????{
????????printf(“isatty?success!\n“);
????}
????printf(“fd->open=%d\n“fd);
????return?fd;
}??
/*******************************************************************?
*?名稱:????????????????UART0_Close?
*?功能:????????????????關閉串口并返回串口設備文件描述?
*?入口參數:?fd:文件描述符????port?:串口號(ttyPS0ttyPS1)
*?出口參數:?????????????void
*******************************************************************/??

void?UART0_Close(int?fd)??
{??
????close(fd);
}??

/*******************************************************************?
*?名稱:????????????????UART0_Set?
*?功能:????????????????設置串口數據位,停止位和效驗位?
*?入口參數:?fd??????????串口文件描述符
*??????????speed???????串口速度
*??????????flow_ctrl???數據流控制
*??????????databits????數據位???取值為?7?或者8
*??????????stopbits????停止位???取值為?1?或者2
*??????????parity??????效驗類型?取值為NEOS
*出口參數:??????????????正確返回為1,錯誤返回為0
*******************************************************************/??
int?UART0_Set(int?fdint?speedint?flow_ctrlint?databitsint?stopbitsint?parity)??
{??

????int???i;
????int???status;
????int???speed_arr[]?=?{?B115200?B19200?B9600?B4800?B2400?B1200?B300};
????int???name_arr[]?=?{115200??19200??9600??4800??2400??1200??300};

????struct?termios?options;

????/*tcgetattr(fd&options)得到與fd指向對象的相關參數,并將它們保存于options該函數還可以測試配置是否正確,
?????*該串口是否可用等。若調用成功,函數返回值為0,若調用失敗,函數返回值為1.?*/
????if??(?tcgetattr(?fd&options)??!=??0)??//erro:?tcgetattr(?fd&options)=1
????{
????????perror(“SetupSerial?1“);
????????return(FALSE);
????}
????//設置串口輸入波特率和輸出波特率
????for?(?i=?0;??i?????{
????????if??(speed?==?name_arr[i])
????????{
????????????cfsetispeed(&options?speed_arr[i]);
????????????cfsetospeed(&options?speed_arr[i]);
????????}
????}
????//修改控制模式,保證程序不會占用串口
????options.c_cflag?|=?CLOCAL;
????

評論

共有 條評論