123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*
- * File : board.c
- * This file is part of RT-Thread RTOS
- * COPYRIGHT (C) 2009 - 2011 RT-Thread Develop Team
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rt-thread.org/license/LICENSE
- *
- * Change Logs:
- * Date Author Notes
- * 2011-02-24 Bernard first implementation
- */
- #include <rthw.h>
- #include <rtthread.h>
- #include "board.h"
- #include "mb9bf506r.h"
- #include "core_cm3.h"
- extern const uint32_t SystemFrequency;
- #define UART0 FM3_MFS0_UART
- struct serial_int_rx uart0_int_rx;
- struct serial_device uart0 =
- {
- UART0,
- &uart0_int_rx,
- RT_NULL
- };
- struct rt_device uart0_device;
- #define UART2 FM3_MFS2_UART
- struct serial_int_rx uart2_int_rx;
- struct serial_device uart2 =
- {
- UART2,
- &uart2_int_rx,
- RT_NULL
- };
- struct rt_device uart2_device;
- /**
- * @addtogroup FM3
- */
- /*@{*/
- /**
- * This is the timer interrupt service routine.
- *
- */
- void rt_hw_timer_handler(void)
- {
- /* enter interrupt */
- rt_interrupt_enter();
- rt_tick_increase();
- /* leave interrupt */
- rt_interrupt_leave();
- }
- void rt_hw_uart2_rx_handler(void)
- {
- #ifdef RT_USING_UART2
- extern struct rt_device uart2_device;
- extern void rt_hw_serial_isr(struct rt_device *device);
- /* enter interrupt */
- rt_interrupt_enter();
- rt_hw_serial_isr(&uart2_device);
- /* leave interrupt */
- rt_interrupt_leave();
- #endif
- }
- /**
- * This function will handle init uart
- */
- static void rt_hw_uart_init(void)
- {
- /* Set Uart Ch2 Port, SIN2_1, SOT2_1 */
- FM3_GPIO->PFR2 = FM3_GPIO->PFR2 | 0x0030;
- FM3_GPIO->EPFR07 = FM3_GPIO->EPFR07 | 0x000a0000;
-
- uart2.uart_device->SMR = SMR_MD_UART | SMR_SOE;;
- uart2.uart_device->BGR = (40000000UL + (BPS/2))/BPS - 1;
- uart2.uart_device->ESCR = ESCR_DATABITS_8;
- uart2.uart_device->SCR = SCR_RXE | SCR_TXE | SCR_RIE;
- UART_ENABLE_IRQ(MFS2RX_IRQn);
- UART_ENABLE_IRQ(MFS2TX_IRQn);
- }
- /**
- * This function will initial FM3 Easy Kit board.
- */
- void rt_hw_board_init()
- {
- /* init systick */
- SysTick_Config(SystemFrequency/RT_TICK_PER_SECOND - 1);
- rt_hw_uart_init();
- }
- /*@}*/
|