⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbgu.c

📁 英贝德 sam7x256 开发板 所有源码程序
💻 C
字号:
//*----------------------------------------------------------------------------
//*         ATMEL Microcontroller Software Support  -  ROUSSET  -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name           : dbgu.c
//* Object              : DBGU routines written in C
//* Creation            : JG   16/Aug/2004
//*----------------------------------------------------------------------------

// Include Standard files
#include <stdarg.h>
#include <stdio.h>
#include "project.h"

//*--------------------------1--------------------------------------------------
//* \fn    AT91F_DBGU_Printk
//* \brief This function is used to send a string through the DBGU channel (Very low level debugging)
//*----------------------------------------------------------------------------
void AT91F_DBGU_Printk(	char *buffer)
{
    AT91PS_DBGU pDbgu = AT91C_BASE_DBGU ;
    unsigned int temp;

    while(*buffer != '\0')
    {
        temp=0;

	while (temp==0)
	{
	  if ( (pDbgu->DBGU_CSR & 0x0200) == 0)
	    temp=0;
	  else
	    temp=1;
	}

        pDbgu->DBGU_THR = *buffer;
        buffer++;
    }
}


void Init_DBGU_CLK(void)
{
  AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, ((unsigned int) 1 << AT91C_ID_SYS));
}

void Init_DBGU_BGR(unsigned short baud)
{
  AT91PS_DBGU pDbgu = AT91C_BASE_DBGU ;

  pDbgu->DBGU_BRGR = (unsigned short)baud;
}

void DBGU_TX_Enable(void)
{
  AT91PS_DBGU pDbgu = AT91C_BASE_DBGU ;

  pDbgu->DBGU_CR = 0x00000040;
}

void DBGU_RX_Enable(void)
{
  AT91PS_DBGU pDbgu = AT91C_BASE_DBGU ;

  pDbgu->DBGU_CR = 0x00000010;
}

void DBGU_RX_TX_RST_DIS(void)
{
  AT91PS_DBGU pDbgu = AT91C_BASE_DBGU ;
  pDbgu->DBGU_CR = 0x000000AC;
}

void DBGU_Parity_Cfg(unsigned int par)
{
  AT91PS_DBGU pDbgu = AT91C_BASE_DBGU ;

  pDbgu->DBGU_MR = par << 9;
}


void Init_DBGU(void)
{
  AT91F_DBGU_CfgPIO();
  DBGU_RX_TX_RST_DIS();
  Init_DBGU_BGR(26);  //26 <=> 115kBd
  DBGU_Parity_Cfg(4);
  DBGU_TX_Enable();
  DBGU_RX_Enable();
}

void uprintf(char *fmt,...)
{
    va_list ap;
    char string[256];
    va_start(ap,fmt);
    vsprintf(string,fmt,ap);
    AT91F_DBGU_Printk(string);
    va_end(ap);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -