Merge pull request #199 from bright-pan/master

It is a big patch for stm32f0x, see the fellow :
This commit is contained in:
aozima 2013-11-18 06:44:33 -08:00
commit 52d49c7dc6
9 changed files with 592 additions and 84 deletions

View File

@ -10,6 +10,7 @@
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2009-01-05 Bernard the first version * 2009-01-05 Bernard the first version
* 2013-11-15 bright add init thread and components initial
*/ */
/** /**
@ -21,63 +22,65 @@
#include <board.h> #include <board.h>
#include <rtthread.h> #include <rtthread.h>
#ifdef RT_USING_COMPONENTS_INIT
#include <components.h>
#endif /* RT_USING_COMPONENTS_INIT */
/* #include "led.h"
LED_GREEN: PC8
LED_RED : PC9
*/
#define rt_hw_led_on() GPIO_SetBits(GPIOC, GPIO_Pin_9)
#define rt_hw_led_off() GPIO_ResetBits(GPIOC, GPIO_Pin_9)
static void rt_hw_led_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable the GPIO_LED Clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
/* Configure the GPIO_LED pin */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
ALIGN(RT_ALIGN_SIZE)
static char led_stack[384];
static struct rt_thread led_thread;
/* led thread entry */
static void led_thread_entry(void* parameter) static void led_thread_entry(void* parameter)
{ {
rt_hw_led_init(); while(1)
{
while(1)
{
rt_hw_led_on(); rt_hw_led_on();
rt_thread_delay(RT_TICK_PER_SECOND/4); rt_thread_delay(RT_TICK_PER_SECOND);
rt_hw_led_off(); rt_hw_led_off();
rt_thread_delay(RT_TICK_PER_SECOND/4); rt_thread_delay(RT_TICK_PER_SECOND);
} }
}
static void rt_init_thread_entry(void* parameter)
{
rt_thread_t led_thread;
/* Initialization RT-Thread Components */
#ifdef RT_USING_COMPONENTS_INIT
rt_components_init();
#endif
/* Set finsh device */
#ifdef RT_USING_FINSH
finsh_set_device(RT_CONSOLE_DEVICE_NAME);
#endif /* RT_USING_FINSH */
/* Create led thread */
led_thread = rt_thread_create("led",
led_thread_entry, RT_NULL,
256, 20, 20);
if(led_thread != RT_NULL)
rt_thread_startup(led_thread);
} }
int rt_application_init() int rt_application_init()
{ {
rt_err_t result; rt_thread_t init_thread;
result = rt_thread_init(&led_thread, #if (RT_THREAD_PRIORITY_MAX == 32)
"led", init_thread = rt_thread_create("init",
led_thread_entry, rt_init_thread_entry, RT_NULL,
RT_NULL, 512, 8, 20);
&led_stack[0], #else
sizeof(led_stack), init_thread = rt_thread_create("init",
4, rt_init_thread_entry, RT_NULL,
2); 512, 80, 20);
if(result == RT_EOK) rt_thread_startup(&led_thread); #endif
if(init_thread != RT_NULL)
rt_thread_startup(init_thread);
return 0; return 0;
} }
/*@}*/ /*@}*/

View File

@ -10,7 +10,7 @@
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2006-08-31 Bernard first implementation * 2006-08-31 Bernard first implementation
* 2011-06-05 Bernard modify for STM32F107 version * 2013-11-15 bright modify for stm32f0xx version and components initial
*/ */
#include <rthw.h> #include <rthw.h>
@ -94,12 +94,6 @@ void rtthread_startup(void)
/* init application */ /* init application */
rt_application_init(); rt_application_init();
#ifdef RT_USING_FINSH
/* init finsh */
finsh_system_init();
finsh_set_device( FINSH_DEVICE_NAME );
#endif
/* init timer thread */ /* init timer thread */
rt_system_timer_thread_init(); rt_system_timer_thread_init();

View File

@ -10,13 +10,18 @@
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2009-01-05 Bernard first implementation * 2009-01-05 Bernard first implementation
* 2013-11-15 bright add RCC initial and print RCC freq function
*/ */
#include <rthw.h> #include <rthw.h>
#include <rtthread.h> #include <rtthread.h>
#include "board.h" #include "board.h"
#include "usart.h"
/* RT_USING_COMPONENTS_INIT */
#ifdef RT_USING_COMPONENTS_INIT
#include <components.h>
#endif
/** /**
* @addtogroup STM32 * @addtogroup STM32
*/ */
@ -35,6 +40,79 @@ void NVIC_Configuration(void)
// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
} }
/**
* @brief Inserts a delay time.
* @param nCount: specifies the delay time length.
* @retval None
*/
static void Delay(__IO uint32_t nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount--;
}
}
/**
* This RCC initial for system.
* use HSI clock source and pll
* HSI = 8; sysclk = 8/2 * 12 = 48MHZ
* sysclk source is pllclk
* AHB prescaler is 1, HCLK = SYSCKL = SystemCoreClock = 48MHZ
*/
static void RCC_Configuration(void)
{
RCC_DeInit();
/* setup HSI */
RCC_HSICmd(ENABLE);
/* Configure PLL source is HSI */
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);
RCC_PLLCmd(ENABLE);
/* Configure SYSCLK source is PLL */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* Conigure AHB prescaler value is 1 */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* Delay for RCC setup */
Delay(0x3FFFF);
/* Update SystemCoreClock value from RCC configure */
SystemCoreClockUpdate();
}
#ifdef PRINT_RCC_FREQ_INFO
/**
* print RCC freq information
*
* for example:
*
* SYSCLK_Frequency is 48000000HZ
* PCLK_Frequency is 48000000HZ
* HCLK_Frequency is 48000000HZ
* CECCLK_Frequency is 32786HZ
* ADCCLK_Frequency is 14000000HZ
* USART1CLK_Frequency is 48000000HZ
* I2C1CLK_Frequency is 8000000HZ
* SystemCoreClock is 48000000HZ
*
*/
void print_rcc_freq_info(void)
{
RCC_ClocksTypeDef RCC_ClockFreq;
RCC_GetClocksFreq(&RCC_ClockFreq);
rt_kprintf("\nSYSCLK_Frequency is %dHZ", RCC_ClockFreq.SYSCLK_Frequency);
rt_kprintf("\nPCLK_Frequency is %dHZ", RCC_ClockFreq.PCLK_Frequency);
rt_kprintf("\nHCLK_Frequency is %dHZ", RCC_ClockFreq.HCLK_Frequency);
rt_kprintf("\nCECCLK_Frequency is %dHZ", RCC_ClockFreq.CECCLK_Frequency);
rt_kprintf("\nADCCLK_Frequency is %dHZ", RCC_ClockFreq.ADCCLK_Frequency);
rt_kprintf("\nUSART1CLK_Frequency is %dHZ", RCC_ClockFreq.USART1CLK_Frequency);
rt_kprintf("\nI2C1CLK_Frequency is %dHZ", RCC_ClockFreq.I2C1CLK_Frequency);
rt_kprintf("\nSystemCoreClock is %dHZ\n", SystemCoreClock);
}
#endif
/** /**
* This is the timer interrupt service routine. * This is the timer interrupt service routine.
* *
@ -49,7 +127,6 @@ void SysTick_Handler(void)
/* leave interrupt */ /* leave interrupt */
rt_interrupt_leave(); rt_interrupt_leave();
} }
/** /**
* This function will initial STM32 board. * This function will initial STM32 board.
*/ */
@ -59,11 +136,21 @@ void rt_hw_board_init()
NVIC_Configuration(); NVIC_Configuration();
/* Configure the SysTick */ /* Configure the SysTick */
RCC_Configuration();
SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND); SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
//rt_hw_usart_init(); /* Initial usart deriver, and set console device */
rt_hw_usart_init();
#ifdef RT_USING_CONSOLE #ifdef RT_USING_CONSOLE
rt_console_set_device(CONSOLE_DEVICE); rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
#endif
/* Print RCC freq info */
#ifdef PRINT_RCC_FREQ_INFO
print_rcc_freq_info();
#endif
/* Call components board initial (use INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
rt_components_board_init();
#endif #endif
} }

View File

@ -10,6 +10,7 @@
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2009-09-22 Bernard add board.h to this bsp * 2009-09-22 Bernard add board.h to this bsp
* 2013-11-15 bright fix SRAM size for heap management
*/ */
// <<< Use Configuration Wizard in Context Menu >>> // <<< Use Configuration Wizard in Context Menu >>>
@ -37,36 +38,16 @@
// <o> Internal SRAM memory size[Kbytes] <8-64> // <o> Internal SRAM memory size[Kbytes] <8-64>
// <i>Default: 64 // <i>Default: 64
#define STM32_SRAM_SIZE 128 #define STM32_SRAM_SIZE 8
#define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024) #define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024)
//#define RT_USING_UART1
#define RT_USING_UART2
//#define RT_USING_UART3
// <o> Console on USART: <0=> no console <1=>USART 1 <2=>USART 2 <3=> USART 3
// <i>Default: 1
#define STM32_CONSOLE_USART 2
void rt_hw_board_init(void); void rt_hw_board_init(void);
#if STM32_CONSOLE_USART == 0
#define CONSOLE_DEVICE "no"
#elif STM32_CONSOLE_USART == 1
#define CONSOLE_DEVICE "uart1"
#elif STM32_CONSOLE_USART == 2
#define CONSOLE_DEVICE "uart2"
#elif STM32_CONSOLE_USART == 3
#define CONSOLE_DEVICE "uart3"
#endif
#define FINSH_DEVICE_NAME CONSOLE_DEVICE
void rt_hw_usart_init(void);
/* SD Card init function */ /* SD Card init function */
void rt_hw_msd_init(void); void rt_hw_msd_init(void);
#define PRINT_RCC_FREQ_INFO
#endif #endif
// <<< Use Configuration Wizard in Context Menu >>> // <<< Use Configuration Wizard in Context Menu >>>

View File

@ -0,0 +1,44 @@
/*
* File : led.c
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006-2013, RT-Thread Development 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
* 2013-11-15 bright the first version
*/
#include "led.h"
/* RT_USING_COMPONENTS_INIT */
#ifdef RT_USING_COMPONENTS_INIT
#include <components.h>
#endif
/*
LED_GREEN: PC8
LED_RED : PC9
*/
/* Initial led gpio pin */
void rt_hw_led_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable the GPIO_LED Clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
/* Configure the GPIO_LED pin */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
/* Initial components for device */
INIT_DEVICE_EXPORT(rt_hw_led_init);

View File

@ -0,0 +1,27 @@
/*
* File : led.h
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2009, RT-Thread Development 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
* 2013-13-05 bright the first version
*/
#ifndef __LED_H__
#define __LED_H__
#include <rthw.h>
#include <rtthread.h>
#include <stm32f0xx.h>
#define rt_hw_led_on() GPIO_SetBits(GPIOC, GPIO_Pin_9)
#define rt_hw_led_off() GPIO_ResetBits(GPIOC, GPIO_Pin_9)
void rt_hw_led_init(void);
#endif

View File

@ -0,0 +1,310 @@
/*
* File : usart.c
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006-2013, RT-Thread Development 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
* 2013-11-15 bright the first version
*/
#include <stm32f0xx.h>
#include <rtdevice.h>
#include "usart.h"
/* USART1 */
#define UART1_GPIO_TX GPIO_Pin_9
#define UART1_GPIO_TX_SOURCE GPIO_PinSource9
#define UART1_GPIO_RX GPIO_Pin_10
#define UART1_GPIO_RX_SOURCE GPIO_PinSource10
#define UART1_GPIO_AF GPIO_AF_1
#define UART1_GPIO GPIOA
/* USART2 */
#define UART2_GPIO_TX GPIO_Pin_2
#define UART2_GPIO_TX_SOURCE GPIO_PinSource2
#define UART2_GPIO_RX GPIO_Pin_3
#define UART2_GPIO_RX_SOURCE GPIO_PinSource3
#define UART2_GPIO_AF GPIO_AF_1
#define UART2_GPIO GPIOA
/* STM32 uart driver */
struct stm32_uart
{
USART_TypeDef* uart_device;
IRQn_Type irq;
};
static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_configure *cfg)
{
struct stm32_uart* uart;
USART_InitTypeDef USART_InitStructure;
RT_ASSERT(serial != RT_NULL);
RT_ASSERT(cfg != RT_NULL);
uart = (struct stm32_uart *)serial->parent.user_data;
USART_InitStructure.USART_BaudRate = cfg->baud_rate;
if (cfg->data_bits == DATA_BITS_8)
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
if (cfg->stop_bits == STOP_BITS_1)
USART_InitStructure.USART_StopBits = USART_StopBits_1;
else if (cfg->stop_bits == STOP_BITS_2)
USART_InitStructure.USART_StopBits = USART_StopBits_2;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(uart->uart_device, &USART_InitStructure);
/* Enable USART */
USART_Cmd(uart->uart_device, ENABLE);
/* enable interrupt */
USART_ITConfig(uart->uart_device, USART_IT_RXNE, ENABLE);
return RT_EOK;
}
static rt_err_t stm32_control(struct rt_serial_device *serial, int cmd, void *arg)
{
struct stm32_uart* uart;
RT_ASSERT(serial != RT_NULL);
uart = (struct stm32_uart *)serial->parent.user_data;
switch (cmd)
{
case RT_DEVICE_CTRL_CLR_INT:
/* disable rx irq */
UART_DISABLE_IRQ(uart->irq);
break;
case RT_DEVICE_CTRL_SET_INT:
/* enable rx irq */
UART_ENABLE_IRQ(uart->irq);
break;
}
return RT_EOK;
}
static int stm32_putc(struct rt_serial_device *serial, char c)
{
struct stm32_uart* uart;
RT_ASSERT(serial != RT_NULL);
uart = (struct stm32_uart *)serial->parent.user_data;
while (!(uart->uart_device->ISR & USART_FLAG_TXE));
uart->uart_device->TDR = c;
return 1;
}
static int stm32_getc(struct rt_serial_device *serial)
{
int ch;
struct stm32_uart* uart;
RT_ASSERT(serial != RT_NULL);
uart = (struct stm32_uart *)serial->parent.user_data;
ch = -1;
if (uart->uart_device->ISR & USART_FLAG_RXNE)
{
ch = uart->uart_device->RDR & 0xff;
}
return ch;
}
static const struct rt_uart_ops stm32_uart_ops =
{
stm32_configure,
stm32_control,
stm32_putc,
stm32_getc,
};
#if defined(RT_USING_UART1)
/* UART1 device driver structure */
struct serial_ringbuffer uart1_int_rx;
struct stm32_uart uart1 =
{
USART1,
USART1_IRQn,
};
struct rt_serial_device serial1;
void USART1_IRQHandler(void)
{
struct stm32_uart* uart;
uart = &uart1;
/* enter interrupt */
rt_interrupt_enter();
if(USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET)
{
rt_hw_serial_isr(&serial1);
/* clear interrupt */
USART_ClearITPendingBit(uart->uart_device, USART_IT_RXNE);
}
if (USART_GetITStatus(uart->uart_device, USART_IT_TC) != RESET)
{
/* clear interrupt */
USART_ClearITPendingBit(uart->uart_device, USART_IT_TC);
}
/* leave interrupt */
rt_interrupt_leave();
}
#endif /* RT_USING_UART1 */
#if defined(RT_USING_UART2)
/* UART2 device driver structure */
struct serial_ringbuffer uart2_int_rx;
struct stm32_uart uart2 =
{
USART2,
USART2_IRQn,
};
struct rt_serial_device serial2;
void USART2_IRQHandler(void)
{
struct stm32_uart* uart;
uart = &uart2;
/* enter interrupt */
rt_interrupt_enter();
if(USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET)
{
rt_hw_serial_isr(&serial2);
/* clear interrupt */
USART_ClearITPendingBit(uart->uart_device, USART_IT_RXNE);
}
if (USART_GetITStatus(uart->uart_device, USART_IT_TC) != RESET)
{
/* clear interrupt */
USART_ClearITPendingBit(uart->uart_device, USART_IT_TC);
}
/* leave interrupt */
rt_interrupt_leave();
}
#endif /* RT_USING_UART2 */
static void RCC_Configuration(void)
{
#ifdef RT_USING_UART1
/* Enable GPIO clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
/* Enable USART clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
#endif /* RT_USING_UART1 */
#ifdef RT_USING_UART2
/* Enable GPIO clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
/* Enable USART clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
#endif /* RT_USING_UART2 */
}
static void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
#ifdef RT_USING_UART1
/* Connect PXx to USARTx_Tx */
GPIO_PinAFConfig(UART1_GPIO, UART1_GPIO_TX_SOURCE, UART1_GPIO_AF);
/* Connect PXx to USARTx_Rx */
GPIO_PinAFConfig(UART1_GPIO, UART1_GPIO_RX_SOURCE, UART1_GPIO_AF);
/* Configure USART Tx, Rx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = UART1_GPIO_TX | UART1_GPIO_RX;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(UART1_GPIO, &GPIO_InitStructure);
#endif /* RT_USING_UART1 */
#ifdef RT_USING_UART2
/* Connect PXx to USARTx_Tx */
GPIO_PinAFConfig(UART2_GPIO, UART2_GPIO_TX_SOURCE, UART2_GPIO_AF);
/* Connect PXx to USARTx_Rx */
GPIO_PinAFConfig(UART2_GPIO, UART2_GPIO_RX_SOURCE, UART2_GPIO_AF);
/* Configure USART Tx, Rx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = UART2_GPIO_TX | UART2_GPIO_RX;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(UART2_GPIO, &GPIO_InitStructure);
#endif /* RT_USING_UART2 */
}
static void NVIC_Configuration(struct stm32_uart* uart)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable the USART Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = uart->irq;
NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void rt_hw_usart_init(void)
{
struct stm32_uart* uart;
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
RCC_Configuration();
GPIO_Configuration();
#ifdef RT_USING_UART1
uart = &uart1;
config.baud_rate = BAUD_RATE_115200;
serial1.ops = &stm32_uart_ops;
serial1.int_rx = &uart1_int_rx;
serial1.config = config;
NVIC_Configuration(&uart1);
/* register UART1 device */
rt_hw_serial_register(&serial1, "uart1",
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
uart);
#endif /* RT_USING_UART1 */
#ifdef RT_USING_UART2
uart = &uart2;
config.baud_rate = BAUD_RATE_115200;
serial2.ops = &stm32_uart_ops;
serial2.int_rx = &uart2_int_rx;
serial2.config = config;
NVIC_Configuration(&uart2);
/* register UART1 device */
rt_hw_serial_register(&serial2, "uart2",
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
uart);
#endif /* RT_USING_UART2 */
}

View File

@ -0,0 +1,30 @@
/*
* File : usart.h
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2009, RT-Thread Development 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
* 2013-11-15 bright the first version
*/
#ifndef __USART_H__
#define __USART_H__
#include <rthw.h>
#include <rtthread.h>
#include "stm32f0xx.h"
#define RT_USING_UART1
#define RT_USING_UART2
#define UART_ENABLE_IRQ(n) NVIC_EnableIRQ((n))
#define UART_DISABLE_IRQ(n) NVIC_DisableIRQ((n))
void rt_hw_usart_init(void);
#endif

View File

@ -9,15 +9,16 @@
#define RT_ALIGN_SIZE 4 #define RT_ALIGN_SIZE 4
/* PRIORITY_MAX */ /* PRIORITY_MAX */
#define RT_THREAD_PRIORITY_MAX 8 #define RT_THREAD_PRIORITY_MAX 32
/* Tick per Second */ /* Tick per Second */
#define RT_TICK_PER_SECOND 100 #define RT_TICK_PER_SECOND 100
/* SECTION: RT_DEBUG */ /* SECTION: RT_DEBUG */
/* Thread Debug */ /* Thread Debug */
/* #define RT_DEBUG */ #define RT_DEBUG
/* #define RT_USING_OVERFLOW_CHECK */ #define RT_DEBUG_INIT 1
#define RT_USING_OVERFLOW_CHECK
/* Using Hook */ /* Using Hook */
/* #define RT_USING_HOOK */ /* #define RT_USING_HOOK */
@ -49,27 +50,58 @@
/* #define RT_USING_MEMPOOL */ /* #define RT_USING_MEMPOOL */
/* Using Dynamic Heap Management */ /* Using Dynamic Heap Management */
/* #define RT_USING_HEAP */ #define RT_USING_HEAP
/* Using Small MM */ /* Using Small MM */
#define RT_USING_SMALL_MEM #define RT_USING_SMALL_MEM
#define RT_USING_TINY_SIZE #define RT_USING_TINY_SIZE
// <bool name="RT_USING_COMPONENTS_INIT" description="Using RT-Thread components initialization" default="true" />
#define RT_USING_COMPONENTS_INIT
/* SECTION: Device System */ /* SECTION: Device System */
/* Using Device System */ /* Using Device System */
/* #define RT_USING_DEVICE */ #define RT_USING_DEVICE
// <bool name="RT_USING_DEVICE_IPC" description="Using device communication" default="true" />
#define RT_USING_DEVICE_IPC
// <bool name="RT_USING_SERIAL" description="Using Serial" default="true" />
#define RT_USING_SERIAL
/* SECTION: Console options */ /* SECTION: Console options */
//#define RT_USING_CONSOLE #define RT_USING_CONSOLE
/* the buffer size of console*/ /* the buffer size of console*/
#define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLEBUF_SIZE 128
// <string name="RT_CONSOLE_DEVICE_NAME" description="The device name for console" default="uart1" />
#define RT_CONSOLE_DEVICE_NAME "uart1"
/* SECTION: finsh, a C-Express shell */ /* SECTION: finsh, a C-Express shell */
/* #define RT_USING_FINSH */ #define RT_USING_FINSH
/* configure finsh parameters */
#define FINSH_THREAD_PRIORITY 25
#define FINSH_THREAD_STACK_SIZE 1024
#define FINSH_HISTORY_LINES 1
/* Using symbol table */ /* Using symbol table */
#define FINSH_USING_SYMTAB #define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION #define FINSH_USING_DESCRIPTION
/* SECTION: libc management */
#ifdef __CC_ARM
/* #define RT_USING_MINILIBC */
/* #define RT_USING_NEWLIB */
#endif
#ifdef __ICCARM__
/* #define RT_USING_MINILIBC */
/* #define RT_USING_NEWLIB */
#endif
#ifdef __GNUC__
/* #define RT_USING_MINILIBC */
#define RT_USING_NEWLIB
#endif
/* SECTION: device filesystem */ /* SECTION: device filesystem */
/* #define RT_USING_DFS */ /* #define RT_USING_DFS */
//#define RT_USING_DFS_ELMFAT //#define RT_USING_DFS_ELMFAT