zoukankan      html  css  js  c++  java
  • AT91SAM7SE应用 UART

    最近在使用 ATMEL 的AT91SAM7SE256 来处理FPGA 输出的数据,然后再把数据发送到PC机端。

    既利用了FPGA 高速数字信号处理的优势,又发挥了ARM处理器对控制类信号的简洁处理。。

    在使用的过程中,感觉AT91SAM7SE256的资料比较少,所以在这里我把自己测试过的代码放上来,提供下载。。

    开发环境如下所示: 

    IDE-Version:
    μVision V4.23.00.0
    Copyright (C) 2011 ARM Ltd and ARM Germany GmbH. All rights reserved.

    Tool Version Numbers:
    Toolchain: MDK-ARM Standard Version: 4.23
    Toolchain Path: D:\Keil\ARM\BIN40
    C Compiler: Armcc.Exe V4.1.0.894
    Assembler: Armasm.Exe V4.1.0.894
    Linker/Locator: ArmLink.Exe V4.1.0.894
    Librarian: ArmAr.Exe V4.1.0.894
    Hex Converter: FromElf.Exe V4.1.0.894
    CPU DLL: SARM.DLL V4.23
    Dialog DLL: DARMATS.DLL V1.20
    Target DLL: UL2ARM.DLL V1.67
    Dialog DLL: TARMATS.DLL V1.20

    下面先放上利用UART模块通过RS232接口与 PC机通信的模块。。

    默认使用的是UART0 模块。

    uart.h

    View Code
    #ifndef UART_H
    #define UART_H
    
    #include "AT91SAM7SE512.h"
    #include "lib_AT91SAM7SE512.h"
    #include "Board.h"
    
    extern  AT91PS_USART COM0;
    
    extern void uart_init (void);
    extern void print_str( char *buffer);
    extern void send_onebyte(uchar data);
    
    
    
    #endif

     uart.c

    View Code
    #include "uart.h"
    
    
    AT91PS_USART COM0;
    
    /******************************************************************************
     * \fn    AT91F_US_Printk
     * \brief This function is used to send a string through the US channel
     ******************************************************************************/
    void print_str(char *buffer) // \arg pointer to a string ending by \0
    {
        while (*buffer != '\0')
        {
            while (!AT91F_US_TxReady(COM0))
                ;
            AT91F_US_PutChar(COM0,  *buffer++);
        }
    }
    
    void send_onebyte(uchar data)
    {
            while (!AT91F_US_TxReady(COM0))
                ;
            AT91F_US_PutChar(COM0, data);
    }
    
    
    
    /******************************************************************************
     * Function Name       : Usart_init
     * Object              : USART initialization
     * Input Parameters    : none
     * Output Parameters   : TRUE
     ******************************************************************************/
    void uart_init(void)
    //* Begin
    {
    
        COM0 = AT91C_BASE_US0;
    
        //* Define RXD and TXD as peripheral
        AT91F_US0_CfgPIO();
    
        // First, enable the clock of the PIOB
        AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_US0);
    
        // Usart Configure
        //AT91F_US_Configure(COM0, MCK, AT91C_US_ASYNC_MODE, USART_BAUD_RATE, 0);
        AT91F_US_Configure(COM0, MCK, AT91C_US_ASYNC_MODE, 19200, 0);
    
        // Enable usart
        COM0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
    }

    头文件AT91SAM7SE512.h为μVision V4.23.00.0自带的

    头文件 lib_AT91SAM7SE512.h 为 ATMEL提供的一个库文件,里面有一些使用的函数来实现对AT91SAM7SE256 的配置。文件请到这里下载。

  • 相关阅读:
    permission 文档 翻译 运行时权限
    TabLayout ViewPager Fragment 简介 案例 MD
    Log 日志工具类 保存到文件 MD
    OkHttp 官方wiki 翻译 MD
    Okhttp 简介 示例 MD
    OkHttp 官方Wiki之【使用案例】
    DialogPlus
    倒计时 总结 Timer Handler CountDownTimer RxJava MD
    RecyclerView 判断滑到底部 顶部 预加载 更多 分页 MD
    CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
  • 原文地址:https://www.cnblogs.com/xiangtailiang/p/2663238.html
Copyright © 2011-2022 走看看