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

📄 board.c

📁 keil 下的ucOS移植程序。移植平台AT91SAM7S64.
💻 C
字号:
#include <includes.h>
#include "board.h"

#define MCK  47923200 // MCK (PLLRC div by 4)
/*
*********************************************************************************************************
*                                         BSP INITIALIZATION
*
* Description : This function should be called by your application code before you make use of any of the
*               functions found in this module.
*
* Arguments   : none
*********************************************************************************************************
*/

void  LED_Init (void)
{
    AT91C_BASE_PIOA->PIO_PER  = BSP_LED4 | BSP_LED3 | BSP_LED2 | BSP_LED1; /* Enable register          */
    AT91C_BASE_PIOA->PIO_OER  = BSP_LED4 | BSP_LED3 | BSP_LED2 | BSP_LED1; /* Output enable            */
    AT91C_BASE_PIOA->PIO_IDR  = BSP_LED4 | BSP_LED3 | BSP_LED2 | BSP_LED1;
    LED_Off(BSP_LED_ALL);                                                  /* Turn OFF all the LEDs    */
}

/*
*********************************************************************************************************
*                                             LED ON
*
* Description : This function is used to control any or all the LEDs on the board.
*
* Arguments   : led    is the number of the LED to control
*                      0    indicates that you want ALL the LEDs to be ON
*                      1    turns ON LED1 on the board
*                      .
*                      .
*                      4    turns ON LED4 on the board
*********************************************************************************************************
*/

void  LED_On (INT8U led)
{
    switch (led) {
        case 0:
             AT91C_BASE_PIOA->PIO_CODR = BSP_LED4 | BSP_LED3 | BSP_LED2 | BSP_LED1;
             break;

        case 1:
             AT91C_BASE_PIOA->PIO_CODR = BSP_LED1;
             break;

        case 2:
             AT91C_BASE_PIOA->PIO_CODR = BSP_LED2;
             break;

        case 3:
             AT91C_BASE_PIOA->PIO_CODR = BSP_LED3;
             break;

        case 4:
             AT91C_BASE_PIOA->PIO_CODR = BSP_LED4;
             break;
    }
}

/*
*********************************************************************************************************
*                                             LED OFF
*
* Description : This function is used to control any or all the LEDs on the board.
*
* Arguments   : led    is the number of the LED to turn OFF
*                      0    indicates that you want ALL the LEDs to be OFF
*                      1    turns OFF LED1 on the board
*                      .
*                      .
*                      4    turns OFF LED4 on the board
*********************************************************************************************************
*/

void  LED_Off (INT8U led)
{
    switch (led) {
        case 0:
             AT91C_BASE_PIOA->PIO_SODR = BSP_LED4 | BSP_LED3 | BSP_LED2 | BSP_LED1;
             break;

        case 1:
             AT91C_BASE_PIOA->PIO_SODR = BSP_LED1;
             break;

        case 2:
             AT91C_BASE_PIOA->PIO_SODR = BSP_LED2;
             break;

        case 3:
             AT91C_BASE_PIOA->PIO_SODR = BSP_LED3;
             break;

        case 4:
             AT91C_BASE_PIOA->PIO_SODR = BSP_LED4;
             break;
    }
}

/*
*********************************************************************************************************
*                                             LED TOGGLE
*
* Description : This function is used to toggle any or all the LEDs on the board.
*
* Arguments   : led    is the number of the LED to toggle
*                      0    indicates that you want ALL the LEDs to be toggle
*                      1    toggles LED1 on the board
*                      .
*                      .
*                      4    toggles LED4 on the board
*********************************************************************************************************
*/

void  LED_Toggle (INT8U led)
{
    switch (led) {
        case 0:
             if (AT91C_BASE_PIOA->PIO_ODSR & BSP_LED1) {
                 AT91C_BASE_PIOA->PIO_CODR = BSP_LED1;
             } else {
                 AT91C_BASE_PIOA->PIO_SODR = BSP_LED1;
             }
             if (AT91C_BASE_PIOA->PIO_ODSR & BSP_LED2) {
                 AT91C_BASE_PIOA->PIO_CODR = BSP_LED2;
             } else {
                 AT91C_BASE_PIOA->PIO_SODR = BSP_LED2;
             }
             if (AT91C_BASE_PIOA->PIO_ODSR & BSP_LED3) {
                 AT91C_BASE_PIOA->PIO_CODR = BSP_LED3;
             } else {
                 AT91C_BASE_PIOA->PIO_SODR = BSP_LED3;
             }
             if (AT91C_BASE_PIOA->PIO_ODSR & BSP_LED4) {
                 AT91C_BASE_PIOA->PIO_CODR = BSP_LED4;
             } else {
                 AT91C_BASE_PIOA->PIO_SODR = BSP_LED4;
             }
             break;

        case 1:
             if (AT91C_BASE_PIOA->PIO_ODSR & BSP_LED1) {
                 AT91C_BASE_PIOA->PIO_CODR = BSP_LED1;
             } else {
                 AT91C_BASE_PIOA->PIO_SODR = BSP_LED1;
             }
             break;

        case 2:
             if (AT91C_BASE_PIOA->PIO_ODSR & BSP_LED2) {
                 AT91C_BASE_PIOA->PIO_CODR = BSP_LED2;
             } else {
                 AT91C_BASE_PIOA->PIO_SODR = BSP_LED2;
             }
             break;

        case 3:
             if (AT91C_BASE_PIOA->PIO_ODSR & BSP_LED3) {
                 AT91C_BASE_PIOA->PIO_CODR = BSP_LED3;
             } else {
                 AT91C_BASE_PIOA->PIO_SODR = BSP_LED3;
             }
             break;

        case 4:
             if (AT91C_BASE_PIOA->PIO_ODSR & BSP_LED4) {
                 AT91C_BASE_PIOA->PIO_CODR = BSP_LED4;
             } else {
                 AT91C_BASE_PIOA->PIO_SODR = BSP_LED4;
             }
             break;
    }
}

//*----------------------------------------------------------------------------
//* Function Name       : Init_Debug
//* Object              : 调试串口初始化  (固定波特率115200)
//* Input Parameters    : none
//* Output Parameters   : none
//*----------------------------------------------------------------------------
void Init_Debug(void)
{ 
	AT91F_DBGU_CfgPIO();
	// Configure DBGU
	AT91F_US_Configure (
		(AT91PS_USART) AT91C_BASE_DBGU,     // DBGU base address
		MCK,             					// 18.432 MHz
		AT91C_US_ASYNC_MODE,        		// mode Register to be programmed
		115200,              			// baudrate to be programmed
		0);                   				// timeguard to be programmed
	// Enable Transmitter
	AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);
	// Enable Receiver
	AT91F_US_EnableRx((AT91PS_USART) AT91C_BASE_DBGU);
}

 //*----------------------------------------------------------------------------
//* \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) // \arg pointer to a string ending by \0
{
	while(*buffer != '\0') {
		while (!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU));
		AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_DBGU, *buffer++);
	}
}

⌨️ 快捷键说明

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