commit
203707e5f1
|
@ -0,0 +1,298 @@
|
|||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/dc.h>
|
||||
#include <rtgui/rtgui_system.h>
|
||||
#include <rtgui/widgets/window.h>
|
||||
#include <rtgui/rtgui_app.h>
|
||||
|
||||
#include "touch.h"
|
||||
|
||||
#define CALIBRATION_STEP_LEFTTOP 0
|
||||
#define CALIBRATION_STEP_RIGHTTOP 1
|
||||
#define CALIBRATION_STEP_RIGHTBOTTOM 2
|
||||
#define CALIBRATION_STEP_LEFTBOTTOM 3
|
||||
#define CALIBRATION_STEP_CENTER 4
|
||||
|
||||
#define TOUCH_WIN_UPDATE 1
|
||||
#define TOUCH_WIN_CLOSE 2
|
||||
|
||||
#define CALIBRATION_WIDTH 15
|
||||
#define CALIBRATION_HEIGHT 15
|
||||
|
||||
struct calibration_session
|
||||
{
|
||||
rt_uint8_t step;
|
||||
|
||||
struct calibration_data data;
|
||||
|
||||
rt_uint16_t width;
|
||||
rt_uint16_t height;
|
||||
|
||||
rt_device_t device;
|
||||
rt_thread_t tid;
|
||||
struct rtgui_win *wid;
|
||||
};
|
||||
static struct calibration_session *calibration_ptr = RT_NULL;
|
||||
|
||||
static void calibration_data_post(rt_uint16_t x, rt_uint16_t y)
|
||||
{
|
||||
if (calibration_ptr != RT_NULL)
|
||||
{
|
||||
switch (calibration_ptr->step)
|
||||
{
|
||||
case CALIBRATION_STEP_LEFTTOP:
|
||||
calibration_ptr->data.min_x = x;
|
||||
calibration_ptr->data.min_y = y;
|
||||
break;
|
||||
|
||||
case CALIBRATION_STEP_RIGHTTOP:
|
||||
calibration_ptr->data.max_x = x;
|
||||
calibration_ptr->data.min_y = (calibration_ptr->data.min_y + y)/2;
|
||||
break;
|
||||
|
||||
case CALIBRATION_STEP_LEFTBOTTOM:
|
||||
calibration_ptr->data.min_x = (calibration_ptr->data.min_x + x)/2;
|
||||
calibration_ptr->data.max_y = y;
|
||||
break;
|
||||
|
||||
case CALIBRATION_STEP_RIGHTBOTTOM:
|
||||
calibration_ptr->data.max_x = (calibration_ptr->data.max_x + x)/2;
|
||||
calibration_ptr->data.max_y = (calibration_ptr->data.max_y + y)/2;
|
||||
break;
|
||||
|
||||
case CALIBRATION_STEP_CENTER:
|
||||
/* calibration done */
|
||||
{
|
||||
rt_uint16_t w, h;
|
||||
|
||||
struct rtgui_event_command ecmd;
|
||||
RTGUI_EVENT_COMMAND_INIT(&ecmd);
|
||||
ecmd.command_id = TOUCH_WIN_CLOSE;
|
||||
ecmd.wid = calibration_ptr->wid;
|
||||
|
||||
/* calculate calibrated data */
|
||||
if (calibration_ptr->data.max_x > calibration_ptr->data.min_x)
|
||||
w = calibration_ptr->data.max_x - calibration_ptr->data.min_x;
|
||||
else
|
||||
w = calibration_ptr->data.min_x - calibration_ptr->data.max_x;
|
||||
w = (w/(calibration_ptr->width - 2 * CALIBRATION_WIDTH)) * CALIBRATION_WIDTH;
|
||||
|
||||
if (calibration_ptr->data.max_y > calibration_ptr->data.min_y)
|
||||
h = calibration_ptr->data.max_y - calibration_ptr->data.min_y;
|
||||
else
|
||||
h = calibration_ptr->data.min_y - calibration_ptr->data.max_y;
|
||||
h = (h/(calibration_ptr->height - 2 * CALIBRATION_HEIGHT)) * CALIBRATION_HEIGHT;
|
||||
|
||||
rt_kprintf("w: %d, h: %d\n", w, h);
|
||||
|
||||
if (calibration_ptr->data.max_x > calibration_ptr->data.min_x)
|
||||
{
|
||||
calibration_ptr->data.min_x -= w;
|
||||
calibration_ptr->data.max_x += w;
|
||||
}
|
||||
else
|
||||
{
|
||||
calibration_ptr->data.min_x += w;
|
||||
calibration_ptr->data.max_x -= w;
|
||||
}
|
||||
|
||||
if (calibration_ptr->data.max_y > calibration_ptr->data.min_y)
|
||||
{
|
||||
calibration_ptr->data.min_y -= h;
|
||||
calibration_ptr->data.max_y += h;
|
||||
}
|
||||
else
|
||||
{
|
||||
calibration_ptr->data.min_y += h;
|
||||
calibration_ptr->data.max_y -= h;
|
||||
}
|
||||
|
||||
rt_kprintf("calibration data: (%d, %d), (%d, %d)\n",
|
||||
calibration_ptr->data.min_x,
|
||||
calibration_ptr->data.max_x,
|
||||
calibration_ptr->data.min_y,
|
||||
calibration_ptr->data.max_y);
|
||||
rtgui_send(calibration_ptr->tid, &ecmd.parent, sizeof(struct rtgui_event_command));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
calibration_ptr->step ++;
|
||||
|
||||
/* post command event */
|
||||
{
|
||||
struct rtgui_event_command ecmd;
|
||||
RTGUI_EVENT_COMMAND_INIT(&ecmd);
|
||||
ecmd.command_id = TOUCH_WIN_UPDATE;
|
||||
ecmd.wid = calibration_ptr->wid;
|
||||
|
||||
rtgui_send(calibration_ptr->tid, &ecmd.parent, sizeof(struct rtgui_event_command));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rt_bool_t calibration_event_handler(struct rtgui_object *object, struct rtgui_event *event)
|
||||
{
|
||||
struct rtgui_widget *widget;
|
||||
widget = RTGUI_WIDGET(object);
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case RTGUI_EVENT_PAINT:
|
||||
{
|
||||
struct rtgui_dc *dc;
|
||||
struct rtgui_rect rect;
|
||||
|
||||
dc = rtgui_dc_begin_drawing(widget);
|
||||
if (dc == RT_NULL)
|
||||
break;
|
||||
|
||||
/* get rect information */
|
||||
rtgui_widget_get_rect(widget, &rect);
|
||||
|
||||
/* clear whole window */
|
||||
RTGUI_WIDGET_BACKGROUND(widget) = white;
|
||||
rtgui_dc_fill_rect(dc, &rect);
|
||||
|
||||
/* reset color */
|
||||
RTGUI_WIDGET_BACKGROUND(widget) = green;
|
||||
RTGUI_WIDGET_FOREGROUND(widget) = black;
|
||||
|
||||
switch (calibration_ptr->step)
|
||||
{
|
||||
case CALIBRATION_STEP_LEFTTOP:
|
||||
rtgui_dc_draw_hline(dc, 0, 2 * CALIBRATION_WIDTH, CALIBRATION_HEIGHT);
|
||||
rtgui_dc_draw_vline(dc, CALIBRATION_WIDTH, 0, 2 * CALIBRATION_HEIGHT);
|
||||
RTGUI_WIDGET_FOREGROUND(widget) = red;
|
||||
rtgui_dc_fill_circle(dc, CALIBRATION_WIDTH, CALIBRATION_HEIGHT, 4);
|
||||
break;
|
||||
|
||||
case CALIBRATION_STEP_RIGHTTOP:
|
||||
rtgui_dc_draw_hline(dc, calibration_ptr->width - 2 * CALIBRATION_WIDTH,
|
||||
calibration_ptr->width, CALIBRATION_HEIGHT);
|
||||
rtgui_dc_draw_vline(dc, calibration_ptr->width - CALIBRATION_WIDTH, 0, 2 * CALIBRATION_HEIGHT);
|
||||
RTGUI_WIDGET_FOREGROUND(widget) = red;
|
||||
rtgui_dc_fill_circle(dc, calibration_ptr->width - CALIBRATION_WIDTH, CALIBRATION_HEIGHT, 4);
|
||||
break;
|
||||
|
||||
case CALIBRATION_STEP_LEFTBOTTOM:
|
||||
rtgui_dc_draw_hline(dc, 0, 2 * CALIBRATION_WIDTH, calibration_ptr->height - CALIBRATION_HEIGHT);
|
||||
rtgui_dc_draw_vline(dc, CALIBRATION_WIDTH, calibration_ptr->height - 2 * CALIBRATION_HEIGHT, calibration_ptr->height);
|
||||
RTGUI_WIDGET_FOREGROUND(widget) = red;
|
||||
rtgui_dc_fill_circle(dc, CALIBRATION_WIDTH, calibration_ptr->height - CALIBRATION_HEIGHT, 4);
|
||||
break;
|
||||
|
||||
case CALIBRATION_STEP_RIGHTBOTTOM:
|
||||
rtgui_dc_draw_hline(dc, calibration_ptr->width - 2 * CALIBRATION_WIDTH,
|
||||
calibration_ptr->width, calibration_ptr->height - CALIBRATION_HEIGHT);
|
||||
rtgui_dc_draw_vline(dc, calibration_ptr->width - CALIBRATION_WIDTH, calibration_ptr->height - 2 * CALIBRATION_HEIGHT, calibration_ptr->height);
|
||||
RTGUI_WIDGET_FOREGROUND(widget) = red;
|
||||
rtgui_dc_fill_circle(dc, calibration_ptr->width - CALIBRATION_WIDTH, calibration_ptr->height - CALIBRATION_HEIGHT, 4);
|
||||
break;
|
||||
|
||||
case CALIBRATION_STEP_CENTER:
|
||||
rtgui_dc_draw_hline(dc, calibration_ptr->width/2 - CALIBRATION_WIDTH, calibration_ptr->width/2 + CALIBRATION_WIDTH, calibration_ptr->height/2);
|
||||
rtgui_dc_draw_vline(dc, calibration_ptr->width/2, calibration_ptr->height/2 - CALIBRATION_HEIGHT, calibration_ptr->height/2 + CALIBRATION_HEIGHT);
|
||||
RTGUI_WIDGET_FOREGROUND(widget) = red;
|
||||
rtgui_dc_fill_circle(dc, calibration_ptr->width/2, calibration_ptr->height/2, 4);
|
||||
break;
|
||||
}
|
||||
rtgui_dc_end_drawing(dc);
|
||||
}
|
||||
break;
|
||||
|
||||
case RTGUI_EVENT_COMMAND:
|
||||
{
|
||||
struct rtgui_event_command *ecmd = (struct rtgui_event_command *)event;
|
||||
|
||||
switch (ecmd->command_id)
|
||||
{
|
||||
case TOUCH_WIN_UPDATE:
|
||||
rtgui_widget_update(widget);
|
||||
break;
|
||||
case TOUCH_WIN_CLOSE:
|
||||
rtgui_win_close(RTGUI_WIN(widget));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return RT_TRUE;
|
||||
|
||||
default:
|
||||
rtgui_win_event_handler(RTGUI_OBJECT(widget), event);
|
||||
break;
|
||||
}
|
||||
|
||||
return RT_FALSE;
|
||||
}
|
||||
|
||||
void calibration_entry(void *parameter)
|
||||
{
|
||||
struct rtgui_app *app;
|
||||
struct rtgui_win *win;
|
||||
struct rtgui_rect rect;
|
||||
|
||||
app = rtgui_app_create(rt_thread_self(), "cali");
|
||||
if (app == RT_NULL)
|
||||
return;
|
||||
|
||||
rtgui_graphic_driver_get_rect(rtgui_graphic_driver_get_default(), &rect);
|
||||
|
||||
/* set screen rect */
|
||||
calibration_ptr->width = rect.x2;
|
||||
calibration_ptr->height = rect.y2;
|
||||
|
||||
/* create calibration window */
|
||||
win = rtgui_win_create(RT_NULL,
|
||||
"calibration", &rect, RTGUI_WIN_STYLE_NO_TITLE | RTGUI_WIN_STYLE_NO_BORDER);
|
||||
if (win == RT_NULL)
|
||||
{
|
||||
rtgui_app_destroy(app);
|
||||
return;
|
||||
}
|
||||
|
||||
calibration_ptr->wid = win;
|
||||
|
||||
rtgui_object_set_event_handler(RTGUI_OBJECT(win), calibration_event_handler);
|
||||
|
||||
rtgui_win_show(win, RT_TRUE);
|
||||
rtgui_win_destroy(win);
|
||||
|
||||
rtgui_app_destroy(app);
|
||||
|
||||
/* set calibration data */
|
||||
rt_device_control(calibration_ptr->device, RT_TOUCH_CALIBRATION_DATA, &calibration_ptr->data);
|
||||
|
||||
/* recover to normal */
|
||||
rt_device_control(calibration_ptr->device, RT_TOUCH_NORMAL, RT_NULL);
|
||||
|
||||
/* release memory */
|
||||
rt_free(calibration_ptr);
|
||||
calibration_ptr = RT_NULL;
|
||||
}
|
||||
|
||||
void calibration_init(void)
|
||||
{
|
||||
rt_device_t device;
|
||||
|
||||
device = rt_device_find("touch");
|
||||
if (device == RT_NULL)
|
||||
return;
|
||||
|
||||
calibration_ptr = (struct calibration_session *)rt_malloc(sizeof(struct calibration_session));
|
||||
rt_memset(calibration_ptr, 0, sizeof(struct calibration_data));
|
||||
calibration_ptr->device = device;
|
||||
|
||||
rt_device_control(calibration_ptr->device, RT_TOUCH_CALIBRATION, (void *)calibration_data_post);
|
||||
|
||||
calibration_ptr->tid = rt_thread_create("cali", calibration_entry, RT_NULL, 2048, 20, 5);
|
||||
if (calibration_ptr->tid != RT_NULL)
|
||||
rt_thread_startup(calibration_ptr->tid);
|
||||
}
|
||||
|
||||
#ifdef RT_USING_FINSH
|
||||
#include <finsh.h>
|
||||
void calibration(void)
|
||||
{
|
||||
calibration_init();
|
||||
}
|
||||
FINSH_FUNCTION_EXPORT(calibration, perform touch calibration);
|
||||
#endif
|
|
@ -28,10 +28,5 @@ Export('RTT_ROOT')
|
|||
Export('rtconfig')
|
||||
|
||||
# prepare building environment
|
||||
objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
|
||||
|
||||
# build program
|
||||
env.Program(TARGET, objs)
|
||||
|
||||
# end building
|
||||
EndBuilding(TARGET)
|
||||
objs = PrepareBuilding(env, RTT_ROOT)
|
||||
DoBuilding(TARGET, objs)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* File : application.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006, RT-Thread Development Team
|
||||
* 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
|
||||
|
@ -21,67 +21,42 @@
|
|||
#include <rtthread.h>
|
||||
|
||||
#ifdef RT_USING_DFS
|
||||
/* dfs init */
|
||||
#include <dfs_init.h>
|
||||
/* dfs filesystem:ELM filesystem init */
|
||||
#include <dfs_elm.h>
|
||||
/* dfs Filesystem APIs */
|
||||
#include <dfs_fs.h>
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_LWIP
|
||||
#include <lwip/sys.h>
|
||||
#include <lwip/api.h>
|
||||
#include <netif/ethernetif.h>
|
||||
#include "stm32_eth.h"
|
||||
#endif
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
#include <components.h>
|
||||
#endif /* RT_USING_COMPONENTS_INIT */
|
||||
|
||||
void rt_init_thread_entry(void* parameter)
|
||||
{
|
||||
/* Filesystem Initialization */
|
||||
#ifdef RT_USING_DFS
|
||||
{
|
||||
/* init the device filesystem */
|
||||
dfs_init();
|
||||
{
|
||||
extern void rt_platform_init(void);
|
||||
rt_platform_init();
|
||||
}
|
||||
|
||||
#ifdef RT_USING_DFS_ELMFAT
|
||||
/* init the elm chan FatFs filesystam*/
|
||||
elm_init();
|
||||
|
||||
/* init sdcard driver */
|
||||
rt_hw_msd_init();
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
/* initialization RT-Thread Components */
|
||||
rt_components_init();
|
||||
#endif
|
||||
|
||||
/* Filesystem Initialization */
|
||||
#if defined(RT_USING_DFS) && defined(RT_USING_DFS_ELMFAT)
|
||||
{
|
||||
/* mount sd card fat partition 1 as root directory */
|
||||
if (dfs_mount("sd0", "/", "elm", 0, 0) == 0)
|
||||
{
|
||||
rt_kprintf("File System initialized!\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
rt_kprintf("File System initialzation failed!\n");
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/* LwIP Initialization */
|
||||
#ifdef RT_USING_LWIP
|
||||
{
|
||||
extern void lwip_sys_init(void);
|
||||
|
||||
/* register ethernetif device */
|
||||
eth_system_device_init();
|
||||
|
||||
rt_hw_stm32_eth_init();
|
||||
/* re-init device driver */
|
||||
rt_device_init_all();
|
||||
|
||||
/* init lwip system */
|
||||
lwip_sys_init();
|
||||
rt_kprintf("TCP/IP initialized!\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif /* RT_USING_DFS && RT_USING_DFS_ELMFAT */
|
||||
}
|
||||
|
||||
int rt_application_init()
|
||||
int rt_application_init(void)
|
||||
{
|
||||
rt_thread_t init_thread;
|
||||
|
||||
|
@ -96,7 +71,9 @@ int rt_application_init()
|
|||
#endif
|
||||
|
||||
if (init_thread != RT_NULL)
|
||||
{
|
||||
rt_thread_startup(init_thread);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* File : startup.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006, RT-Thread Develop Team
|
||||
* COPYRIGHT (C) 2006 - 2013, RT-Thread Develop Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
|
@ -15,8 +15,6 @@
|
|||
|
||||
#include <rthw.h>
|
||||
#include <rtthread.h>
|
||||
|
||||
#include "stm32f10x.h"
|
||||
#include "board.h"
|
||||
|
||||
/**
|
||||
|
@ -26,17 +24,16 @@
|
|||
/*@{*/
|
||||
|
||||
extern int rt_application_init(void);
|
||||
#ifdef RT_USING_FINSH
|
||||
extern void finsh_system_init(void);
|
||||
extern void finsh_set_device(const char* device);
|
||||
#endif
|
||||
|
||||
#ifdef __CC_ARM
|
||||
extern int Image$$RW_IRAM1$$ZI$$Limit;
|
||||
#define STM32_SRAM_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit)
|
||||
#elif __ICCARM__
|
||||
#pragma section="HEAP"
|
||||
#define STM32_SRAM_BEGIN (__segment_end("HEAP"))
|
||||
#else
|
||||
extern int __bss_end;
|
||||
#define STM32_SRAM_BEGIN (&__bss_end)
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -50,11 +47,11 @@ extern int __bss_end;
|
|||
*******************************************************************************/
|
||||
void assert_failed(u8* file, u32 line)
|
||||
{
|
||||
rt_kprintf("\n\r Wrong parameter value detected on\r\n");
|
||||
rt_kprintf(" file %s\r\n", file);
|
||||
rt_kprintf(" line %d\r\n", line);
|
||||
rt_kprintf("\n\r Wrong parameter value detected on\r\n");
|
||||
rt_kprintf(" file %s\r\n", file);
|
||||
rt_kprintf(" line %d\r\n", line);
|
||||
|
||||
while (1) ;
|
||||
while (1) ;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -62,69 +59,56 @@ void assert_failed(u8* file, u32 line)
|
|||
*/
|
||||
void rtthread_startup(void)
|
||||
{
|
||||
/* init board */
|
||||
rt_hw_board_init();
|
||||
/* init board */
|
||||
rt_hw_board_init();
|
||||
|
||||
/* show version */
|
||||
rt_show_version();
|
||||
/* show version */
|
||||
rt_show_version();
|
||||
|
||||
/* init tick */
|
||||
rt_system_tick_init();
|
||||
/* init tick */
|
||||
rt_system_tick_init();
|
||||
|
||||
/* init kernel object */
|
||||
rt_system_object_init();
|
||||
/* init kernel object */
|
||||
rt_system_object_init();
|
||||
|
||||
/* init timer system */
|
||||
rt_system_timer_init();
|
||||
/* init timer system */
|
||||
rt_system_timer_init();
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
#ifdef __CC_ARM
|
||||
rt_system_heap_init((void*)&Image$$RW_IRAM1$$ZI$$Limit, (void*)STM32_SRAM_END);
|
||||
#elif __ICCARM__
|
||||
rt_system_heap_init(__segment_end("HEAP"), (void*)STM32_SRAM_END);
|
||||
#else
|
||||
/* init memory system */
|
||||
rt_system_heap_init((void*)&__bss_end, (void*)STM32_SRAM_END);
|
||||
#endif
|
||||
rt_system_heap_init((void*)STM32_SRAM_BEGIN, (void*)STM32_SRAM_END);
|
||||
#endif
|
||||
|
||||
/* init scheduler system */
|
||||
rt_system_scheduler_init();
|
||||
/* init scheduler system */
|
||||
rt_system_scheduler_init();
|
||||
|
||||
/* init all device */
|
||||
rt_device_init_all();
|
||||
/* init all device */
|
||||
rt_device_init_all();
|
||||
|
||||
/* init application */
|
||||
rt_application_init();
|
||||
|
||||
#ifdef RT_USING_FINSH
|
||||
/* init finsh */
|
||||
finsh_system_init();
|
||||
finsh_set_device("uart1");
|
||||
#endif
|
||||
/* init application */
|
||||
rt_application_init();
|
||||
|
||||
/* init timer thread */
|
||||
rt_system_timer_thread_init();
|
||||
|
||||
/* init idle thread */
|
||||
rt_thread_idle_init();
|
||||
/* init idle thread */
|
||||
rt_thread_idle_init();
|
||||
|
||||
/* start scheduler */
|
||||
rt_system_scheduler_start();
|
||||
/* start scheduler */
|
||||
rt_system_scheduler_start();
|
||||
|
||||
/* never reach here */
|
||||
return ;
|
||||
/* never reach here */
|
||||
return ;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
/* disable interrupt first */
|
||||
rt_hw_interrupt_disable();
|
||||
/* disable interrupt first */
|
||||
rt_hw_interrupt_disable();
|
||||
|
||||
/* startup RT-Thread RTOS */
|
||||
rtthread_startup();
|
||||
/* startup RT-Thread RTOS */
|
||||
rtthread_startup();
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
|
|
@ -4,6 +4,15 @@ from building import *
|
|||
|
||||
cwd = os.path.join(str(Dir('#')), 'drivers')
|
||||
src = Glob('*.c')
|
||||
|
||||
# remove no need file.
|
||||
if GetDepend('RT_USING_LWIP') == False:
|
||||
SrcRemove(src, 'stm32_eth.c')
|
||||
|
||||
if GetDepend('RT_USING_SPI') == False:
|
||||
SrcRemove(src, 'rt_stm32f10x_spi.c')
|
||||
SrcRemove(src, 'msd.c')
|
||||
|
||||
CPPPATH = [cwd]
|
||||
|
||||
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* File : board.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2009 RT-Thread Develop Team
|
||||
* COPYRIGHT (C) 2006 - 2013 RT-Thread Develop Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
|
@ -14,7 +14,6 @@
|
|||
|
||||
#include <rthw.h>
|
||||
#include <rtthread.h>
|
||||
|
||||
#include "board.h"
|
||||
|
||||
/**
|
||||
|
@ -33,39 +32,19 @@
|
|||
void NVIC_Configuration(void)
|
||||
{
|
||||
#ifdef VECT_TAB_RAM
|
||||
/* Set the Vector Table base location at 0x20000000 */
|
||||
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
|
||||
/* Set the Vector Table base location at 0x20000000 */
|
||||
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
|
||||
#else /* VECT_TAB_FLASH */
|
||||
/* Set the Vector Table base location at 0x08000000 */
|
||||
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
|
||||
/* Set the Vector Table base location at 0x08000000 */
|
||||
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : SysTick_Configuration
|
||||
* Description : Configures the SysTick for OS tick.
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void SysTick_Configuration(void)
|
||||
{
|
||||
RCC_ClocksTypeDef rcc_clocks;
|
||||
rt_uint32_t cnts;
|
||||
|
||||
RCC_GetClocksFreq(&rcc_clocks);
|
||||
|
||||
cnts = (rt_uint32_t)rcc_clocks.HCLK_Frequency / RT_TICK_PER_SECOND;
|
||||
|
||||
SysTick_Config(cnts);
|
||||
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the timer interrupt service routine.
|
||||
*
|
||||
*/
|
||||
void rt_hw_timer_handler(void)
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
/* enter interrupt */
|
||||
rt_interrupt_enter();
|
||||
|
@ -79,16 +58,16 @@ void rt_hw_timer_handler(void)
|
|||
/**
|
||||
* This function will initial STM32 board.
|
||||
*/
|
||||
void rt_hw_board_init()
|
||||
void rt_hw_board_init(void)
|
||||
{
|
||||
/* NVIC Configuration */
|
||||
NVIC_Configuration();
|
||||
/* NVIC Configuration */
|
||||
NVIC_Configuration();
|
||||
|
||||
/* Configure the SysTick */
|
||||
SysTick_Configuration();
|
||||
/* Configure the SysTick */
|
||||
SysTick_Config( SystemCoreClock / RT_TICK_PER_SECOND );
|
||||
|
||||
rt_hw_usart_init();
|
||||
rt_console_set_device(CONSOLE_DEVICE);
|
||||
rt_hw_usart_init();
|
||||
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* File : board.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2009, RT-Thread Development Team
|
||||
* 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
|
||||
|
@ -40,27 +40,12 @@
|
|||
#define STM32_SRAM_SIZE 64
|
||||
#define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024)
|
||||
|
||||
// <o> Console on USART: <0=> no console <1=>USART 1 <2=>USART 2 <3=> USART 3
|
||||
// <i>Default: 1
|
||||
#define STM32_CONSOLE_USART 1
|
||||
#define RT_USING_UART1
|
||||
#define RT_USING_SPI1
|
||||
|
||||
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
|
||||
|
||||
void rt_hw_usart_init(void);
|
||||
|
||||
/* SD Card init function */
|
||||
void rt_hw_msd_init(void);
|
||||
|
||||
#endif
|
||||
|
||||
// <<< Use Configuration Wizard in Context Menu >>>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,173 +1,132 @@
|
|||
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
|
||||
* File Name : msd.h
|
||||
* Author : MCD Application Team
|
||||
* Version : V2.1
|
||||
* Date : 05/30/2008
|
||||
* Description : Header for msd.c file.
|
||||
********************************************************************************
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
|
||||
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
|
||||
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
|
||||
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
|
||||
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
||||
* FOR MORE INFORMATION PLEASE CAREFULLY READ THE LICENSE AGREEMENT FILE LOCATED
|
||||
* IN THE ROOT DIRECTORY OF THIS FIRMWARE PACKAGE.
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* File : msd.h
|
||||
* SPI mode SD Card Driver
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2012, 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
|
||||
* 2009-04-17 Bernard first version.
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __MSD_H
|
||||
#define __MSD_H
|
||||
#ifndef MSD_H_INCLUDED
|
||||
#define MSD_H_INCLUDED
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <stm32f10x.h>
|
||||
#include <stdint.h>
|
||||
#include <drivers/spi.h>
|
||||
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
/* Block Size */
|
||||
#define BLOCK_SIZE 512
|
||||
/* SD command (SPI mode) */
|
||||
#define GO_IDLE_STATE 0 /* CMD0 R1 */
|
||||
#define SEND_OP_COND 1 /* CMD1 R1 */
|
||||
#define SWITCH_FUNC 6 /* CMD6 R1 */
|
||||
#define SEND_IF_COND 8 /* CMD8 R7 */
|
||||
#define SEND_CSD 9 /* CMD9 R1 */
|
||||
#define SEND_CID 10 /* CMD10 R1 */
|
||||
#define STOP_TRANSMISSION 12 /* CMD12 R1B */
|
||||
#define SEND_STATUS 13 /* CMD13 R2 */
|
||||
#define SET_BLOCKLEN 16 /* CMD16 R1 */
|
||||
#define READ_SINGLE_BLOCK 17 /* CMD17 R1 */
|
||||
#define READ_MULTIPLE_BLOCK 18 /* CMD18 R1 */
|
||||
#define WRITE_BLOCK 24 /* CMD24 R1 */
|
||||
#define WRITE_MULTIPLE_BLOCK 25 /* CMD25 R1 */
|
||||
#define PROGRAM_CSD 27 /* CMD27 R1 */
|
||||
#define SET_WRITE_PROT 28 /* CMD28 R1B */
|
||||
#define CLR_WRITE_PROT 29 /* CMD29 R1B */
|
||||
#define SEND_WRITE_PROT 30 /* CMD30 R1 */
|
||||
#define ERASE_WR_BLK_START_ADDR 32 /* CMD32 R1 */
|
||||
#define ERASE_WR_BLK_END_ADDR 33 /* CMD33 R1 */
|
||||
#define ERASE 38 /* CMD38 R1B */
|
||||
#define LOCK_UNLOCK 42 /* CMD42 R1 */
|
||||
#define APP_CMD 55 /* CMD55 R1 */
|
||||
#define GEN_CMD 56 /* CMD56 R1 */
|
||||
#define READ_OCR 58 /* CMD58 R3 */
|
||||
#define CRC_ON_OFF 59 /* CMD59 R1 */
|
||||
|
||||
/* Dummy byte */
|
||||
#define DUMMY 0xFF
|
||||
/* Application-Specific Command */
|
||||
#define SD_STATUS 13 /* ACMD13 R2 */
|
||||
#define SEND_NUM_WR_BLOCKS 22 /* ACMD22 R1 */
|
||||
#define SET_WR_BLK_ERASE_COUNT 23 /* ACMD23 R1 */
|
||||
#define SD_SEND_OP_COND 41 /* ACMD41 R1 */
|
||||
#define SET_CLR_CARD_DETECT 42 /* ACMD42 R1 */
|
||||
#define SEND_SCR 51 /* ACMD51 R1 */
|
||||
|
||||
/* Start Data tokens */
|
||||
/* Tokens (necessary because at nop/idle (and CS active) only 0xff is on the data/command line) */
|
||||
#define MSD_START_DATA_SINGLE_BLOCK_READ 0xFE /* Data token start byte, Start Single Block Read */
|
||||
#define MSD_START_DATA_MULTIPLE_BLOCK_READ 0xFE /* Data token start byte, Start Multiple Block Read */
|
||||
#define MSD_START_DATA_SINGLE_BLOCK_WRITE 0xFE /* Data token start byte, Start Single Block Write */
|
||||
#define MSD_START_DATA_MULTIPLE_BLOCK_WRITE 0xFD /* Data token start byte, Start Multiple Block Write */
|
||||
#define MSD_STOP_DATA_MULTIPLE_BLOCK_WRITE 0xFD /* Data toke stop byte, Stop Multiple Block Write */
|
||||
#define MSD_TOKEN_READ_START 0xFE /* Data token start byte, Start Single Block Read */
|
||||
#define MSD_TOKEN_WRITE_SINGLE_START 0xFE /* Data token start byte, Start Single Block Write */
|
||||
|
||||
/* MSD functions return */
|
||||
#define MSD_SUCCESS 0x00
|
||||
#define MSD_FAIL 0xFF
|
||||
#define MSD_TOKEN_WRITE_MULTIPLE_START 0xFC /* Data token start byte, Start Multiple Block Write */
|
||||
#define MSD_TOKEN_WRITE_MULTIPLE_STOP 0xFD /* Data toke stop byte, Stop Multiple Block Write */
|
||||
|
||||
/* MSD reponses and error flags */
|
||||
#define MSD_RESPONSE_NO_ERROR 0x00
|
||||
#define MSD_IN_IDLE_STATE 0x01
|
||||
#define MSD_ERASE_RESET 0x02
|
||||
#define MSD_ILLEGAL_COMMAND 0x04
|
||||
#define MSD_COM_CRC_ERROR 0x08
|
||||
#define MSD_ERASE_SEQUENCE_ERROR 0x10
|
||||
#define MSD_ADDRESS_ERROR 0x20
|
||||
#define MSD_PARAMETER_ERROR 0x40
|
||||
#define MSD_RESPONSE_FAILURE 0xFF
|
||||
#define MSD_RESPONSE_NO_ERROR 0x00
|
||||
#define MSD_IN_IDLE_STATE 0x01
|
||||
#define MSD_ERASE_RESET 0x02
|
||||
#define MSD_ILLEGAL_COMMAND 0x04
|
||||
#define MSD_COM_CRC_ERROR 0x08
|
||||
#define MSD_ERASE_SEQUENCE_ERROR 0x10
|
||||
#define MSD_ADDRESS_ERROR 0x20
|
||||
#define MSD_PARAMETER_ERROR 0x40
|
||||
#define MSD_RESPONSE_FAILURE 0xFF
|
||||
|
||||
/* Data response error */
|
||||
#define MSD_DATA_OK 0x05
|
||||
#define MSD_DATA_CRC_ERROR 0x0B
|
||||
#define MSD_DATA_WRITE_ERROR 0x0D
|
||||
#define MSD_DATA_OTHER_ERROR 0xFF
|
||||
#define MSD_DATA_OK 0x05
|
||||
#define MSD_DATA_CRC_ERROR 0x0B
|
||||
#define MSD_DATA_WRITE_ERROR 0x0D
|
||||
#define MSD_DATA_OTHER_ERROR 0xFF
|
||||
#define MSD_DATA_RESPONSE_MASK 0x1F
|
||||
#define MSD_GET_DATA_RESPONSE(res) (res & MSD_DATA_RESPONSE_MASK)
|
||||
|
||||
/* Commands: CMDxx = CMD-number | 0x40 */
|
||||
#define MSD_GO_IDLE_STATE 0 /* CMD0=0x40 */
|
||||
#define MSD_SEND_OP_COND 1 /* CMD1=0x41 */
|
||||
#define MSD_SEND_CSD 9 /* CMD9=0x49 */
|
||||
#define MSD_SEND_CID 10 /* CMD10=0x4A */
|
||||
#define MSD_STOP_TRANSMISSION 12 /* CMD12=0x4C */
|
||||
#define MSD_SEND_STATUS 13 /* CMD13=0x4D */
|
||||
#define MSD_SET_BLOCKLEN 16 /* CMD16=0x50 */
|
||||
#define MSD_READ_SINGLE_BLOCK 17 /* CMD17=0x51 */
|
||||
#define MSD_READ_MULTIPLE_BLOCK 18 /* CMD18=0x52 */
|
||||
#define MSD_SET_BLOCK_COUNT 23 /* CMD23=0x57 */
|
||||
#define MSD_WRITE_BLOCK 24 /* CMD24=0x58 */
|
||||
#define MSD_WRITE_MULTIPLE_BLOCK 25 /* CMD25=0x59 */
|
||||
#define MSD_PROGRAM_CSD 27 /* CMD27=0x5B */
|
||||
#define MSD_SET_WRITE_PROT 28 /* CMD28=0x5C */
|
||||
#define MSD_CLR_WRITE_PROT 29 /* CMD29=0x5D */
|
||||
#define MSD_SEND_WRITE_PROT 30 /* CMD30=0x5E */
|
||||
#define MSD_TAG_SECTOR_START 32 /* CMD32=0x60 */
|
||||
#define MSD_TAG_SECTOR_END 33 /* CMD33=0x61 */
|
||||
#define MSD_UNTAG_SECTOR 34 /* CMD34=0x62 */
|
||||
#define MSD_TAG_ERASE_GROUP_START 35 /* CMD35=0x63 */
|
||||
#define MSD_TAG_ERASE_GROUP_END 36 /* CMD36=0x64 */
|
||||
#define MSD_UNTAG_ERASE_GROUP 37 /* CMD37=0x65 */
|
||||
#define MSD_ERASE 38 /* CMD38=0x66 */
|
||||
#define MSD_READ_OCR 39 /* CMD39=0x67 */
|
||||
#define MSD_CRC_ON_OFF 40 /* CMD40=0x68 */
|
||||
#define MSD_CMD_LEN 6 /**< command, arg and crc. */
|
||||
#define MSD_RESPONSE_MAX_LEN 5 /**< response max len */
|
||||
#define MSD_CSD_LEN 16 /**< SD crad CSD register len */
|
||||
#define SECTOR_SIZE 512 /**< sector size, default 512byte */
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
typedef struct _MSD_CSD /*Card Specific Data*/
|
||||
/* card try timeout, unit: ms */
|
||||
#define CARD_TRY_TIMES 3000
|
||||
#define CARD_TRY_TIMES_ACMD41 800
|
||||
#define CARD_WAIT_TOKEN_TIMES 800
|
||||
|
||||
#define MSD_USE_PRE_ERASED /**< id define MSD_USE_PRE_ERASED, before CMD25, send ACMD23 */
|
||||
|
||||
/**
|
||||
* SD/MMC card type
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
vu8 CSDStruct; /* CSD structure */
|
||||
vu8 SysSpecVersion; /* System specification version */
|
||||
vu8 Reserved1; /* Reserved */
|
||||
vu8 TAAC; /* Data read access-time 1 */
|
||||
vu8 NSAC; /* Data read access-time 2 in CLK cycles */
|
||||
vu8 MaxBusClkFrec; /* Max. bus clock frequency */
|
||||
vu16 CardComdClasses; /* Card command classes */
|
||||
vu8 RdBlockLen; /* Max. read data block length */
|
||||
vu8 PartBlockRead; /* Partial blocks for read allowed */
|
||||
vu8 WrBlockMisalign; /* Write block misalignment */
|
||||
vu8 RdBlockMisalign; /* Read block misalignment */
|
||||
vu8 DSRImpl; /* DSR implemented */
|
||||
vu8 Reserved2; /* Reserved */
|
||||
vu16 DeviceSize; /* Device Size */
|
||||
vu8 MaxRdCurrentVDDMin; /* Max. read current @ VDD min */
|
||||
vu8 MaxRdCurrentVDDMax; /* Max. read current @ VDD max */
|
||||
vu8 MaxWrCurrentVDDMin; /* Max. write current @ VDD min */
|
||||
vu8 MaxWrCurrentVDDMax; /* Max. write current @ VDD max */
|
||||
vu8 DeviceSizeMul; /* Device size multiplier */
|
||||
vu8 EraseGrSize; /* Erase group size */
|
||||
vu8 EraseGrMul; /* Erase group size multiplier */
|
||||
vu8 WrProtectGrSize; /* Write protect group size */
|
||||
vu8 WrProtectGrEnable; /* Write protect group enable */
|
||||
vu8 ManDeflECC; /* Manufacturer default ECC */
|
||||
vu8 WrSpeedFact; /* Write speed factor */
|
||||
vu8 MaxWrBlockLen; /* Max. write data block length */
|
||||
vu8 WriteBlockPaPartial; /* Partial blocks for write allowed */
|
||||
vu8 Reserved3; /* Reserded */
|
||||
vu8 ContentProtectAppli; /* Content protection application */
|
||||
vu8 FileFormatGrouop; /* File format group */
|
||||
vu8 CopyFlag; /* Copy flag (OTP) */
|
||||
vu8 PermWrProtect; /* Permanent write protection */
|
||||
vu8 TempWrProtect; /* Temporary write protection */
|
||||
vu8 FileFormat; /* File Format */
|
||||
vu8 ECC; /* ECC code */
|
||||
vu8 msd_CRC; /* CRC */
|
||||
vu8 Reserved4; /* always 1*/
|
||||
}
|
||||
sMSD_CSD;
|
||||
MSD_CARD_TYPE_UNKNOWN = 0, /**< unknown */
|
||||
MSD_CARD_TYPE_MMC, /**< MultiMedia Card */
|
||||
MSD_CARD_TYPE_SD_V1_X, /**< Ver 1.X Standard Capacity SD Memory Card */
|
||||
MSD_CARD_TYPE_SD_V2_X, /**< Ver 2.00 or later Standard Capacity SD Memory Card */
|
||||
MSD_CARD_TYPE_SD_SDHC, /**< High Capacity SD Memory Card */
|
||||
MSD_CARD_TYPE_SD_SDXC, /**< later Extended Capacity SD Memory Card */
|
||||
}msd_card_type;
|
||||
|
||||
typedef struct _MSD_CID /*Card Identification Data*/
|
||||
typedef enum
|
||||
{
|
||||
vu8 ManufacturerID; /* ManufacturerID */
|
||||
vu16 OEM_AppliID; /* OEM/Application ID */
|
||||
vu32 ProdName1; /* Product Name part1 */
|
||||
vu8 ProdName2; /* Product Name part2*/
|
||||
vu8 ProdRev; /* Product Revision */
|
||||
vu32 ProdSN; /* Product Serial Number */
|
||||
vu8 Reserved1; /* Reserved1 */
|
||||
vu16 ManufactDate; /* Manufacturing Date */
|
||||
vu8 msd_CRC; /* CRC */
|
||||
vu8 Reserved2; /* always 1*/
|
||||
}
|
||||
sMSD_CID;
|
||||
response_type_unknown = 0,
|
||||
response_r1,
|
||||
response_r1b,
|
||||
response_r2,
|
||||
response_r3,
|
||||
response_r4,
|
||||
response_r5,
|
||||
response_r7,
|
||||
}response_type;
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
struct msd_device
|
||||
{
|
||||
struct rt_device parent; /**< RT-Thread device struct */
|
||||
struct rt_device_blk_geometry geometry; /**< sector size, sector count */
|
||||
struct rt_spi_device * spi_device; /**< SPI interface */
|
||||
msd_card_type card_type; /**< card type: MMC SD1.x SD2.0 SDHC SDXC */
|
||||
uint32_t max_clock; /**< MAX SPI clock */
|
||||
};
|
||||
|
||||
/*----- High layer function -----*/
|
||||
u8 MSD_Init(void);
|
||||
u8 MSD_WriteBlock(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);
|
||||
u8 MSD_ReadBlock(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead);
|
||||
u8 MSD_WriteBuffer(u8* pBuffer, u32 WriteAddr, u32 NumByteToWrite);
|
||||
u8 MSD_ReadBuffer(u8* pBuffer, u32 ReadAddr, u32 NumByteToRead);
|
||||
u8 MSD_GetCSDRegister(sMSD_CSD* MSD_csd);
|
||||
u8 MSD_GetCIDRegister(sMSD_CID* MSD_cid);
|
||||
extern rt_err_t msd_init(const char * sd_device_name, const char * spi_device_name);
|
||||
|
||||
/*----- Medium layer function -----*/
|
||||
void MSD_SendCmd(u8 Cmd, u32 Arg, u8 Crc);
|
||||
u8 MSD_GetResponse(u8 Response);
|
||||
u8 MSD_GetDataResponse(void);
|
||||
u8 MSD_GoIdleState(void);
|
||||
u16 MSD_GetStatus(void);
|
||||
|
||||
/*----- Low layer function -----*/
|
||||
u8 MSD_WriteByte(u8 byte);
|
||||
u8 MSD_ReadByte(void);
|
||||
|
||||
#endif /* __MSD_H */
|
||||
|
||||
/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
|
||||
#endif // MSD_H_INCLUDED
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
#include <rtthread.h>
|
||||
#include <board.h>
|
||||
|
||||
#ifdef RT_USING_LWIP
|
||||
#include "stm32_eth.h"
|
||||
#endif /* RT_USING_LWIP */
|
||||
|
||||
#ifdef RT_USING_SPI
|
||||
#include "rt_stm32f10x_spi.h"
|
||||
|
||||
#if defined(RT_USING_DFS) && defined(RT_USING_DFS_ELMFAT)
|
||||
#include "msd.h"
|
||||
#endif /* RT_USING_DFS */
|
||||
|
||||
/*
|
||||
* SPI1_MOSI: PA7
|
||||
* SPI1_MISO: PA6
|
||||
* SPI1_SCK : PA5
|
||||
*
|
||||
* CS0: PA4 SD card.
|
||||
*/
|
||||
static void rt_hw_spi_init(void)
|
||||
{
|
||||
#ifdef RT_USING_SPI1
|
||||
/* register spi bus */
|
||||
{
|
||||
static struct stm32_spi_bus stm32_spi;
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
/* Enable GPIO clock */
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,
|
||||
ENABLE);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
stm32_spi_register(SPI1, &stm32_spi, "spi1");
|
||||
}
|
||||
|
||||
/* attach cs */
|
||||
{
|
||||
static struct rt_spi_device spi_device;
|
||||
static struct stm32_spi_cs spi_cs;
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
|
||||
/* spi21: PG10 */
|
||||
spi_cs.GPIOx = GPIOA;
|
||||
spi_cs.GPIO_Pin = GPIO_Pin_4;
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = spi_cs.GPIO_Pin;
|
||||
GPIO_SetBits(spi_cs.GPIOx, spi_cs.GPIO_Pin);
|
||||
GPIO_Init(spi_cs.GPIOx, &GPIO_InitStructure);
|
||||
|
||||
rt_spi_bus_attach_device(&spi_device, "spi10", "spi1", (void*)&spi_cs);
|
||||
}
|
||||
#endif /* RT_USING_SPI1 */
|
||||
}
|
||||
#endif /* RT_USING_SPI */
|
||||
|
||||
|
||||
void rt_platform_init(void)
|
||||
{
|
||||
#ifdef RT_USING_SPI
|
||||
rt_hw_spi_init();
|
||||
|
||||
#if defined(RT_USING_DFS) && defined(RT_USING_DFS_ELMFAT)
|
||||
/* init sdcard driver */
|
||||
{
|
||||
extern void rt_hw_msd_init(void);
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
/* PC4 : SD Power */
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
GPIO_Init(GPIOC, &GPIO_InitStructure);
|
||||
|
||||
/* SD card power on. */
|
||||
GPIO_ResetBits(GPIOC, GPIO_Pin_4);
|
||||
rt_thread_delay(2);
|
||||
|
||||
msd_init("sd0", "spi10");
|
||||
}
|
||||
#endif /* RT_USING_DFS && RT_USING_DFS_ELMFAT */
|
||||
|
||||
#endif // RT_USING_SPI
|
||||
|
||||
#ifdef RT_USING_LWIP
|
||||
/* initialize eth interface */
|
||||
rt_hw_stm32_eth_init();
|
||||
#endif /* RT_USING_LWIP */
|
||||
|
||||
}
|
|
@ -0,0 +1,372 @@
|
|||
#include "rt_stm32f10x_spi.h"
|
||||
|
||||
static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configuration* configuration);
|
||||
static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* message);
|
||||
|
||||
static struct rt_spi_ops stm32_spi_ops =
|
||||
{
|
||||
configure,
|
||||
xfer
|
||||
};
|
||||
|
||||
#ifdef USING_SPI1
|
||||
static struct stm32_spi_bus stm32_spi_bus_1;
|
||||
#endif /* #ifdef USING_SPI1 */
|
||||
|
||||
#ifdef USING_SPI2
|
||||
static struct stm32_spi_bus stm32_spi_bus_2;
|
||||
#endif /* #ifdef USING_SPI2 */
|
||||
|
||||
#ifdef USING_SPI3
|
||||
static struct stm32_spi_bus stm32_spi_bus_3;
|
||||
#endif /* #ifdef USING_SPI3 */
|
||||
|
||||
//------------------ DMA ------------------
|
||||
#ifdef SPI_USE_DMA
|
||||
static uint8_t dummy = 0xFF;
|
||||
#endif
|
||||
|
||||
#ifdef SPI_USE_DMA
|
||||
static void DMA_Configuration(struct stm32_spi_bus * stm32_spi_bus, const void * send_addr, void * recv_addr, rt_size_t size)
|
||||
{
|
||||
DMA_InitTypeDef DMA_InitStructure;
|
||||
|
||||
DMA_ClearFlag(stm32_spi_bus->DMA_Channel_RX_FLAG_TC
|
||||
| stm32_spi_bus->DMA_Channel_RX_FLAG_TE
|
||||
| stm32_spi_bus->DMA_Channel_TX_FLAG_TC
|
||||
| stm32_spi_bus->DMA_Channel_TX_FLAG_TE);
|
||||
|
||||
/* RX channel configuration */
|
||||
DMA_Cmd(stm32_spi_bus->DMA_Channel_RX, DISABLE);
|
||||
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)(&(stm32_spi_bus->SPI->DR));
|
||||
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
|
||||
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
||||
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
|
||||
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
|
||||
DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
|
||||
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
|
||||
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
|
||||
|
||||
DMA_InitStructure.DMA_BufferSize = size;
|
||||
|
||||
if(recv_addr != RT_NULL)
|
||||
{
|
||||
DMA_InitStructure.DMA_MemoryBaseAddr = (u32) recv_addr;
|
||||
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
|
||||
}
|
||||
else
|
||||
{
|
||||
DMA_InitStructure.DMA_MemoryBaseAddr = (u32) (&dummy);
|
||||
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
|
||||
}
|
||||
|
||||
DMA_Init(stm32_spi_bus->DMA_Channel_RX, &DMA_InitStructure);
|
||||
|
||||
DMA_Cmd(stm32_spi_bus->DMA_Channel_RX, ENABLE);
|
||||
|
||||
/* TX channel configuration */
|
||||
DMA_Cmd(stm32_spi_bus->DMA_Channel_TX, DISABLE);
|
||||
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)(&(stm32_spi_bus->SPI->DR));
|
||||
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
|
||||
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
||||
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
|
||||
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
|
||||
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
|
||||
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
|
||||
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
|
||||
|
||||
DMA_InitStructure.DMA_BufferSize = size;
|
||||
|
||||
if(send_addr != RT_NULL)
|
||||
{
|
||||
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)send_addr;
|
||||
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
|
||||
}
|
||||
else
|
||||
{
|
||||
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)(&dummy);;
|
||||
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
|
||||
}
|
||||
|
||||
DMA_Init(stm32_spi_bus->DMA_Channel_TX, &DMA_InitStructure);
|
||||
|
||||
DMA_Cmd(stm32_spi_bus->DMA_Channel_TX, ENABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
rt_inline uint16_t get_spi_BaudRatePrescaler(rt_uint32_t max_hz)
|
||||
{
|
||||
uint16_t SPI_BaudRatePrescaler;
|
||||
|
||||
/* STM32F10x SPI MAX 18Mhz */
|
||||
if(max_hz >= SystemCoreClock/2 && SystemCoreClock/2 <= 18000000)
|
||||
{
|
||||
SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
|
||||
}
|
||||
else if(max_hz >= SystemCoreClock/4)
|
||||
{
|
||||
SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
|
||||
}
|
||||
else if(max_hz >= SystemCoreClock/8)
|
||||
{
|
||||
SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
|
||||
}
|
||||
else if(max_hz >= SystemCoreClock/16)
|
||||
{
|
||||
SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
|
||||
}
|
||||
else if(max_hz >= SystemCoreClock/32)
|
||||
{
|
||||
SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
|
||||
}
|
||||
else if(max_hz >= SystemCoreClock/64)
|
||||
{
|
||||
SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
|
||||
}
|
||||
else if(max_hz >= SystemCoreClock/128)
|
||||
{
|
||||
SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* min prescaler 256 */
|
||||
SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
|
||||
}
|
||||
|
||||
return SPI_BaudRatePrescaler;
|
||||
}
|
||||
|
||||
static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configuration* configuration)
|
||||
{
|
||||
struct stm32_spi_bus * stm32_spi_bus = (struct stm32_spi_bus *)device->bus;
|
||||
SPI_InitTypeDef SPI_InitStructure;
|
||||
|
||||
SPI_StructInit(&SPI_InitStructure);
|
||||
|
||||
/* data_width */
|
||||
if(configuration->data_width <= 8)
|
||||
{
|
||||
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
|
||||
}
|
||||
else if(configuration->data_width <= 16)
|
||||
{
|
||||
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
|
||||
}
|
||||
else
|
||||
{
|
||||
return RT_EIO;
|
||||
}
|
||||
/* baudrate */
|
||||
SPI_InitStructure.SPI_BaudRatePrescaler = get_spi_BaudRatePrescaler(configuration->max_hz);
|
||||
/* CPOL */
|
||||
if(configuration->mode & RT_SPI_CPOL)
|
||||
{
|
||||
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
|
||||
}
|
||||
else
|
||||
{
|
||||
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
|
||||
}
|
||||
/* CPHA */
|
||||
if(configuration->mode & RT_SPI_CPHA)
|
||||
{
|
||||
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
|
||||
}
|
||||
else
|
||||
{
|
||||
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
|
||||
}
|
||||
/* MSB or LSB */
|
||||
if(configuration->mode & RT_SPI_MSB)
|
||||
{
|
||||
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
|
||||
}
|
||||
else
|
||||
{
|
||||
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;
|
||||
}
|
||||
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
|
||||
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
|
||||
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
|
||||
|
||||
/* init SPI */
|
||||
SPI_I2S_DeInit(stm32_spi_bus->SPI);
|
||||
SPI_Init(stm32_spi_bus->SPI, &SPI_InitStructure);
|
||||
/* Enable SPI_MASTER */
|
||||
SPI_Cmd(stm32_spi_bus->SPI, ENABLE);
|
||||
SPI_CalculateCRC(stm32_spi_bus->SPI, DISABLE);
|
||||
|
||||
return RT_EOK;
|
||||
};
|
||||
|
||||
static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* message)
|
||||
{
|
||||
struct stm32_spi_bus * stm32_spi_bus = (struct stm32_spi_bus *)device->bus;
|
||||
struct rt_spi_configuration * config = &device->config;
|
||||
SPI_TypeDef * SPI = stm32_spi_bus->SPI;
|
||||
struct stm32_spi_cs * stm32_spi_cs = device->parent.user_data;
|
||||
rt_uint32_t size = message->length;
|
||||
|
||||
/* take CS */
|
||||
if(message->cs_take)
|
||||
{
|
||||
GPIO_ResetBits(stm32_spi_cs->GPIOx, stm32_spi_cs->GPIO_Pin);
|
||||
}
|
||||
|
||||
#ifdef SPI_USE_DMA
|
||||
if(message->length > 32)
|
||||
{
|
||||
if(config->data_width <= 8)
|
||||
{
|
||||
DMA_Configuration(stm32_spi_bus, message->send_buf, message->recv_buf, message->length);
|
||||
SPI_I2S_DMACmd(SPI, SPI_I2S_DMAReq_Tx | SPI_I2S_DMAReq_Rx, ENABLE);
|
||||
while (DMA_GetFlagStatus(stm32_spi_bus->DMA_Channel_RX_FLAG_TC) == RESET
|
||||
|| DMA_GetFlagStatus(stm32_spi_bus->DMA_Channel_TX_FLAG_TC) == RESET);
|
||||
SPI_I2S_DMACmd(SPI, SPI_I2S_DMAReq_Tx | SPI_I2S_DMAReq_Rx, DISABLE);
|
||||
}
|
||||
// rt_memcpy(buffer,_spi_flash_buffer,DMA_BUFFER_SIZE);
|
||||
// buffer += DMA_BUFFER_SIZE;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if(config->data_width <= 8)
|
||||
{
|
||||
const rt_uint8_t * send_ptr = message->send_buf;
|
||||
rt_uint8_t * recv_ptr = message->recv_buf;
|
||||
|
||||
while(size--)
|
||||
{
|
||||
rt_uint8_t data = 0xFF;
|
||||
|
||||
if(send_ptr != RT_NULL)
|
||||
{
|
||||
data = *send_ptr++;
|
||||
}
|
||||
|
||||
//Wait until the transmit buffer is empty
|
||||
while (SPI_I2S_GetFlagStatus(SPI, SPI_I2S_FLAG_TXE) == RESET);
|
||||
// Send the byte
|
||||
SPI_I2S_SendData(SPI, data);
|
||||
|
||||
//Wait until a data is received
|
||||
while (SPI_I2S_GetFlagStatus(SPI, SPI_I2S_FLAG_RXNE) == RESET);
|
||||
// Get the received data
|
||||
data = SPI_I2S_ReceiveData(SPI);
|
||||
|
||||
if(recv_ptr != RT_NULL)
|
||||
{
|
||||
*recv_ptr++ = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(config->data_width <= 16)
|
||||
{
|
||||
const rt_uint16_t * send_ptr = message->send_buf;
|
||||
rt_uint16_t * recv_ptr = message->recv_buf;
|
||||
|
||||
while(size--)
|
||||
{
|
||||
rt_uint16_t data = 0xFF;
|
||||
|
||||
if(send_ptr != RT_NULL)
|
||||
{
|
||||
data = *send_ptr++;
|
||||
}
|
||||
|
||||
//Wait until the transmit buffer is empty
|
||||
while (SPI_I2S_GetFlagStatus(SPI, SPI_I2S_FLAG_TXE) == RESET);
|
||||
// Send the byte
|
||||
SPI_I2S_SendData(SPI, data);
|
||||
|
||||
//Wait until a data is received
|
||||
while (SPI_I2S_GetFlagStatus(SPI, SPI_I2S_FLAG_RXNE) == RESET);
|
||||
// Get the received data
|
||||
data = SPI_I2S_ReceiveData(SPI);
|
||||
|
||||
if(recv_ptr != RT_NULL)
|
||||
{
|
||||
*recv_ptr++ = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* release CS */
|
||||
if(message->cs_release)
|
||||
{
|
||||
GPIO_SetBits(stm32_spi_cs->GPIOx, stm32_spi_cs->GPIO_Pin);
|
||||
}
|
||||
|
||||
return message->length;
|
||||
};
|
||||
|
||||
/** \brief init and register stm32 spi bus.
|
||||
*
|
||||
* \param SPI: STM32 SPI, e.g: SPI1,SPI2,SPI3.
|
||||
* \param stm32_spi: stm32 spi bus struct.
|
||||
* \param spi_bus_name: spi bus name, e.g: "spi1"
|
||||
* \return
|
||||
*
|
||||
*/
|
||||
rt_err_t stm32_spi_register(SPI_TypeDef * SPI,
|
||||
struct stm32_spi_bus * stm32_spi,
|
||||
const char * spi_bus_name)
|
||||
{
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
|
||||
|
||||
if(SPI == SPI1)
|
||||
{
|
||||
stm32_spi->SPI = SPI1;
|
||||
#ifdef SPI_USE_DMA
|
||||
/* Enable the DMA1 Clock */
|
||||
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
|
||||
|
||||
stm32_spi->DMA_Channel_RX = DMA1_Channel2;
|
||||
stm32_spi->DMA_Channel_TX = DMA1_Channel3;
|
||||
stm32_spi->DMA_Channel_RX_FLAG_TC = DMA1_FLAG_TC2;
|
||||
stm32_spi->DMA_Channel_RX_FLAG_TE = DMA1_FLAG_TE2;
|
||||
stm32_spi->DMA_Channel_TX_FLAG_TC = DMA1_FLAG_TC3;
|
||||
stm32_spi->DMA_Channel_TX_FLAG_TE = DMA1_FLAG_TE3;
|
||||
#endif
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
|
||||
}
|
||||
else if(SPI == SPI2)
|
||||
{
|
||||
stm32_spi->SPI = SPI2;
|
||||
#ifdef SPI_USE_DMA
|
||||
/* Enable the DMA1 Clock */
|
||||
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
|
||||
|
||||
stm32_spi->DMA_Channel_RX = DMA1_Channel4;
|
||||
stm32_spi->DMA_Channel_TX = DMA1_Channel5;
|
||||
stm32_spi->DMA_Channel_RX_FLAG_TC = DMA1_FLAG_TC4;
|
||||
stm32_spi->DMA_Channel_RX_FLAG_TE = DMA1_FLAG_TE4;
|
||||
stm32_spi->DMA_Channel_TX_FLAG_TC = DMA1_FLAG_TC5;
|
||||
stm32_spi->DMA_Channel_TX_FLAG_TE = DMA1_FLAG_TE5;
|
||||
#endif
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
|
||||
}
|
||||
else if(SPI == SPI3)
|
||||
{
|
||||
stm32_spi->SPI = SPI3;
|
||||
#ifdef SPI_USE_DMA
|
||||
/* Enable the DMA2 Clock */
|
||||
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
|
||||
|
||||
stm32_spi->DMA_Channel_RX = DMA2_Channel1;
|
||||
stm32_spi->DMA_Channel_TX = DMA2_Channel2;
|
||||
stm32_spi->DMA_Channel_RX_FLAG_TC = DMA2_FLAG_TC1;
|
||||
stm32_spi->DMA_Channel_RX_FLAG_TE = DMA2_FLAG_TE1;
|
||||
stm32_spi->DMA_Channel_TX_FLAG_TC = DMA2_FLAG_TC2;
|
||||
stm32_spi->DMA_Channel_TX_FLAG_TE = DMA2_FLAG_TE2;
|
||||
#endif
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
return RT_ENOSYS;
|
||||
}
|
||||
|
||||
return rt_spi_bus_register(&stm32_spi->parent, spi_bus_name, &stm32_spi_ops);
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
#ifndef STM32_SPI_H_INCLUDED
|
||||
#define STM32_SPI_H_INCLUDED
|
||||
|
||||
#include <rtdevice.h>
|
||||
|
||||
#include "stm32f10x.h"
|
||||
#include "stm32f10x_spi.h"
|
||||
|
||||
#include "board.h"
|
||||
|
||||
//#define SPI_USE_DMA
|
||||
|
||||
struct stm32_spi_bus
|
||||
{
|
||||
struct rt_spi_bus parent;
|
||||
SPI_TypeDef * SPI;
|
||||
#ifdef SPI_USE_DMA
|
||||
DMA_Channel_TypeDef * DMA_Channel_TX;
|
||||
DMA_Channel_TypeDef * DMA_Channel_RX;
|
||||
uint32_t DMA_Channel_TX_FLAG_TC;
|
||||
uint32_t DMA_Channel_TX_FLAG_TE;
|
||||
uint32_t DMA_Channel_RX_FLAG_TC;
|
||||
uint32_t DMA_Channel_RX_FLAG_TE;
|
||||
#endif /* SPI_USE_DMA */
|
||||
};
|
||||
|
||||
struct stm32_spi_cs
|
||||
{
|
||||
GPIO_TypeDef * GPIOx;
|
||||
uint16_t GPIO_Pin;
|
||||
};
|
||||
|
||||
/* public function list */
|
||||
rt_err_t stm32_spi_register(SPI_TypeDef * SPI,
|
||||
struct stm32_spi_bus * stm32_spi,
|
||||
const char * spi_bus_name);
|
||||
|
||||
#endif // STM32_SPI_H_INCLUDED
|
|
@ -5,7 +5,7 @@
|
|||
* @version V3.5.0
|
||||
* @date 08-April-2011
|
||||
* @brief Main Interrupt Service Routines.
|
||||
* This file provides template for all exceptions handler and
|
||||
* This file provides template for all exceptions handler and
|
||||
* peripherals interrupt service routine.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
|
@ -19,7 +19,7 @@
|
|||
*
|
||||
* <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
|
||||
******************************************************************************
|
||||
*/
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "stm32f10x_it.h"
|
||||
|
@ -107,12 +107,6 @@ void DebugMon_Handler(void)
|
|||
{
|
||||
}
|
||||
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
extern void rt_hw_timer_handler(void);
|
||||
rt_hw_timer_handler();
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/* STM32F10x Peripherals Interrupt Handlers */
|
||||
/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
|
||||
|
@ -132,7 +126,7 @@ void USART1_IRQHandler(void)
|
|||
#ifdef RT_USING_UART1
|
||||
extern struct rt_device uart1_device;
|
||||
extern void rt_hw_serial_isr(struct rt_device *device);
|
||||
|
||||
|
||||
/* enter interrupt */
|
||||
rt_interrupt_enter();
|
||||
|
||||
|
@ -191,7 +185,7 @@ void USART3_IRQHandler(void)
|
|||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
*/
|
||||
|
||||
|
||||
/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
* 2010-03-29 Bernard remove interrupt Tx and DMA Rx mode
|
||||
*/
|
||||
|
||||
#include <board.h>
|
||||
#include "usart.h"
|
||||
#include <serial.h>
|
||||
#include <stm32f10x_dma.h>
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>RT-Thread STM32</TargetName>
|
||||
|
@ -12,25 +15,25 @@
|
|||
<Device>STM32F107VC</Device>
|
||||
<Vendor>STMicroelectronics</Vendor>
|
||||
<Cpu>IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x803FFFF) CLOCK(25000000) CPUTYPE("Cortex-M3")</Cpu>
|
||||
<FlashUtilSpec />
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"STARTUP\ST\STM32F10x.s" ("STM32 Startup Code")</StartupFile>
|
||||
<FlashDriverDll>UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_CL -FS08000000 -FL040000)</FlashDriverDll>
|
||||
<DeviceId>4889</DeviceId>
|
||||
<RegisterFile>stm32f10x_lib.h</RegisterFile>
|
||||
<MemoryEnv />
|
||||
<Cmp />
|
||||
<Asm />
|
||||
<Linker />
|
||||
<OHString />
|
||||
<InfinionOptionDll />
|
||||
<SLE66CMisc />
|
||||
<SLE66AMisc />
|
||||
<SLE66LinkerMisc />
|
||||
<MemoryEnv></MemoryEnv>
|
||||
<Cmp></Cmp>
|
||||
<Asm></Asm>
|
||||
<Linker></Linker>
|
||||
<OHString></OHString>
|
||||
<InfinionOptionDll></InfinionOptionDll>
|
||||
<SLE66CMisc></SLE66CMisc>
|
||||
<SLE66AMisc></SLE66AMisc>
|
||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||
<SFDFile>SFD\ST\STM32F107x\STM32F107.sfr</SFDFile>
|
||||
<UseEnv>0</UseEnv>
|
||||
<BinPath />
|
||||
<IncludePath />
|
||||
<LibPath />
|
||||
<BinPath></BinPath>
|
||||
<IncludePath></IncludePath>
|
||||
<LibPath></LibPath>
|
||||
<RegisterFilePath>ST\STM32F10x\</RegisterFilePath>
|
||||
<DBRegisterFilePath>ST\STM32F10x\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
|
@ -40,43 +43,45 @@
|
|||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\obj\</OutputDirectory>
|
||||
<OutputDirectory>.\build\</OutputDirectory>
|
||||
<OutputName>rtthread-stm32</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>0</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>0</BrowseInformation>
|
||||
<ListingPath>.\</ListingPath>
|
||||
<ListingPath>.\build\</ListingPath>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name />
|
||||
<UserProg2Name />
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name />
|
||||
<UserProg2Name />
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name />
|
||||
<UserProg2Name />
|
||||
<UserProg1Name>fromelf --bin !L --output rtthread.bin</UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</AfterMake>
|
||||
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||
<SVCSIdString />
|
||||
<SVCSIdString></SVCSIdString>
|
||||
</TargetCommonOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
|
@ -90,16 +95,16 @@
|
|||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||
<PublicsOnly>0</PublicsOnly>
|
||||
<StopOnExitCode>3</StopOnExitCode>
|
||||
<CustomArgument />
|
||||
<IncludeLibraryModules />
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
</CommonProperty>
|
||||
<DllOption>
|
||||
<SimDllName>SARMCM3.DLL</SimDllName>
|
||||
<SimDllArguments />
|
||||
<SimDllArguments></SimDllArguments>
|
||||
<SimDlgDll>DARMSTM.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pSTM32F107VC</SimDlgDllArguments>
|
||||
<TargetDllName>SARMCM3.DLL</TargetDllName>
|
||||
<TargetDllArguments />
|
||||
<TargetDllArguments></TargetDllArguments>
|
||||
<TargetDlgDll>TARMSTM.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-pSTM32F107VC</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
|
@ -131,22 +136,23 @@
|
|||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>0</RestoreTracepoints>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>7</TargetSelection>
|
||||
<SimDlls>
|
||||
<CpuDll />
|
||||
<CpuDllArguments />
|
||||
<PeripheralDll />
|
||||
<PeripheralDllArguments />
|
||||
<InitializationFile />
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
</SimDlls>
|
||||
<TargetDlls>
|
||||
<CpuDll />
|
||||
<CpuDllArguments />
|
||||
<PeripheralDll />
|
||||
<PeripheralDllArguments />
|
||||
<InitializationFile />
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
<Driver>Segger\JL2CM3.dll</Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
|
@ -160,8 +166,8 @@
|
|||
<DriverSelection>4099</DriverSelection>
|
||||
</Flash1>
|
||||
<Flash2>Segger\JL2CM3.dll</Flash2>
|
||||
<Flash3 />
|
||||
<Flash4 />
|
||||
<Flash3>"" ()</Flash3>
|
||||
<Flash4></Flash4>
|
||||
</Utilities>
|
||||
<TargetArmAds>
|
||||
<ArmAdsMisc>
|
||||
|
@ -193,7 +199,7 @@
|
|||
<RvctClst>0</RvctClst>
|
||||
<GenPPlst>0</GenPPlst>
|
||||
<AdsCpuType>"Cortex-M3"</AdsCpuType>
|
||||
<RvctDeviceName />
|
||||
<RvctDeviceName></RvctDeviceName>
|
||||
<mOS>0</mOS>
|
||||
<uocRom>0</uocRom>
|
||||
<uocRam>0</uocRam>
|
||||
|
@ -324,7 +330,7 @@
|
|||
<Size>0x0</Size>
|
||||
</OCR_RVCT10>
|
||||
</OnChipMemories>
|
||||
<RvctStartVector />
|
||||
<RvctStartVector></RvctStartVector>
|
||||
</ArmAdsMisc>
|
||||
<Cads>
|
||||
<interw>1</interw>
|
||||
|
@ -339,11 +345,12 @@
|
|||
<Rwpi>0</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>0</uThumb>
|
||||
<uSurpInc>0</uSurpInc>
|
||||
<VariousControls>
|
||||
<MiscControls />
|
||||
<MiscControls></MiscControls>
|
||||
<Define>STM32F10X_CL, USE_STDPERIPH_DRIVER</Define>
|
||||
<Undefine />
|
||||
<IncludePath>.;..\..\components\CMSIS\Include;..\..\components\dfs;..\..\components\dfs\include;..\..\components\finsh;..\..\components\net\lwip\src;..\..\components\net\lwip\src\arch\include;..\..\components\net\lwip\src\include;..\..\components\net\lwip\src\include\ipv4;..\..\components\net\lwip\src\include\netif;..\..\include;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x;Libraries\STM32F10x_StdPeriph_Driver\inc;applications;drivers</IncludePath>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>.;..\..\components\CMSIS\Include;..\..\components\dfs;..\..\components\dfs\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\init;..\..\components\net\lwip\src;..\..\components\net\lwip\src\arch\include;..\..\components\net\lwip\src\include;..\..\components\net\lwip\src\include\ipv4;..\..\components\net\lwip\src\include\netif;..\..\include;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x;Libraries\STM32F10x_StdPeriph_Driver\inc;applications;drivers</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
|
@ -354,11 +361,12 @@
|
|||
<SplitLS>0</SplitLS>
|
||||
<SwStkChk>0</SwStkChk>
|
||||
<NoWarn>0</NoWarn>
|
||||
<uSurpInc>0</uSurpInc>
|
||||
<VariousControls>
|
||||
<MiscControls />
|
||||
<Define />
|
||||
<Undefine />
|
||||
<IncludePath />
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Aads>
|
||||
<LDads>
|
||||
|
@ -370,12 +378,12 @@
|
|||
<useFile>0</useFile>
|
||||
<TextAddressRange>0x08000000</TextAddressRange>
|
||||
<DataAddressRange>0x20000000</DataAddressRange>
|
||||
<ScatterFile />
|
||||
<IncludeLibs />
|
||||
<IncludeLibsPath />
|
||||
<ScatterFile></ScatterFile>
|
||||
<IncludeLibs></IncludeLibs>
|
||||
<IncludeLibsPath></IncludeLibsPath>
|
||||
<Misc> --keep __fsym_* --keep __vsym_* </Misc>
|
||||
<LinkerInputFile />
|
||||
<DisabledWarnings />
|
||||
<LinkerInputFile></LinkerInputFile>
|
||||
<DisabledWarnings></DisabledWarnings>
|
||||
</LDads>
|
||||
</TargetArmAds>
|
||||
</TargetOption>
|
||||
|
@ -388,8 +396,6 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>applications\application.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>startup.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
@ -405,36 +411,36 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>drivers\board.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>msd.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>drivers\msd.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>platform.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>drivers\platform.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>rt_stm32f10x_spi.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>drivers\rt_stm32f10x_spi.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>serial.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>drivers\serial.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32_eth.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>drivers\stm32_eth.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_it.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>drivers\stm32f10x_it.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>usart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
@ -450,169 +456,121 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_crc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_rcc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_wwdg.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_pwr.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_exti.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_bkp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_bkp.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_i2c.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_adc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_dac.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_dac.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_rtc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_fsmc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_tim.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_iwdg.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_spi.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_flash.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_sdio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_gpio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_usart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_dbgmcu.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_dbgmcu.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_dma.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_dma.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_can.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f10x_cec.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_cec.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>misc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\STM32F10x_StdPeriph_Driver\src\misc.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>startup_stm32f10x_cl.s</FileName>
|
||||
<FileType>2</FileType>
|
||||
|
@ -628,78 +586,56 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\clock.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>device.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\device.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>idle.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\idle.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>ipc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\ipc.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>irq.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\irq.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>kservice.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\kservice.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>mem.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\mem.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>mempool.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\mempool.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>object.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\object.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>scheduler.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\scheduler.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>thread.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\thread.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>timer.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
@ -715,29 +651,21 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libcpu\arm\cortex-m3\cpuport.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>context_rvds.S</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>..\..\libcpu\arm\cortex-m3\context_rvds.S</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>backtrace.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libcpu\arm\common\backtrace.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>div0.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libcpu\arm\common\div0.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>showmem.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
@ -753,36 +681,26 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\dfs\src\dfs.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>dfs_fs.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\dfs\src\dfs_fs.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>dfs_file.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\dfs\src\dfs_file.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>dfs_posix.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\dfs\src\dfs_posix.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>dfs_elm.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\dfs\filesystems\elmfat\dfs_elm.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>ff.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
@ -790,6 +708,21 @@
|
|||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>DeviceDrivers</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>spi_core.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\drivers\spi\spi_core.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>spi_dev.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\drivers\spi\spi_dev.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>finsh</GroupName>
|
||||
<Files>
|
||||
|
@ -798,85 +731,61 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\cmd.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_compiler.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_compiler.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_error.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_error.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_heap.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_heap.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_init.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_init.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_node.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_node.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_ops.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_ops.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_parser.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_parser.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_token.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_token.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_var.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_var.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>finsh_vm.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\finsh_vm.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>shell.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\finsh\shell.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>symbol.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
@ -884,6 +793,16 @@
|
|||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Components</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>components.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\init\components.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>LwIP</GroupName>
|
||||
<Files>
|
||||
|
@ -892,239 +811,171 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\api\api_lib.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>api_msg.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\api\api_msg.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>err.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\api\err.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>netbuf.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\api\netbuf.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>netdb.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\api\netdb.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>netifapi.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\api\netifapi.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>sockets.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\api\sockets.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tcpip.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\api\tcpip.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>sys_arch.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\arch\sys_arch.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>def.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\def.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>dhcp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\dhcp.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>dns.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\dns.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>init.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\init.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>memp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\memp.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>netif.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\netif.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>pbuf.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\pbuf.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>raw.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\raw.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stats.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\stats.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>sys.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\sys.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tcp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\tcp.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tcp_in.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\tcp_in.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tcp_out.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\tcp_out.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>timers.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\timers.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>udp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\udp.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>autoip.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\ipv4\autoip.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>icmp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\ipv4\icmp.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>igmp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\ipv4\igmp.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>inet.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\ipv4\inet.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>inet_chksum.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\ipv4\inet_chksum.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>ip.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\ipv4\ip.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>ip_addr.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\ipv4\ip_addr.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>ip_frag.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\core\ipv4\ip_frag.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>etharp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\netif\etharp.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>ethernetif.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\components\net\lwip\src\netif\ethernetif.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>slipif.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
@ -1135,4 +986,5 @@
|
|||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
# GoldBull debug board
|
||||
- 10M/100M ethernet
|
||||
- SPI SD Card
|
||||
- LCD
|
||||
SPI: SPI1 (PA5,PA6,PA7). CS:PA4
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
/* #define RT_USING_TIMER_SOFT */
|
||||
#define RT_TIMER_THREAD_PRIO 4
|
||||
#define RT_TIMER_THREAD_STACK_SIZE 512
|
||||
#define RT_TIMER_TICK_PER_SECOND 10
|
||||
|
||||
/* SECTION: IPC */
|
||||
/* Using Semaphore*/
|
||||
|
@ -59,13 +58,21 @@
|
|||
/* SECTION: Device System */
|
||||
/* Using Device System */
|
||||
#define RT_USING_DEVICE
|
||||
#define RT_USING_UART1
|
||||
#define RT_USING_SPI
|
||||
|
||||
/* SECTION: Console options */
|
||||
#define RT_USING_CONSOLE
|
||||
/* the buffer size of console*/
|
||||
#define RT_CONSOLEBUF_SIZE 128
|
||||
|
||||
// <string name="RT_CONSOLE_DEVICE_NAME" description="console device name" default="uart3" />
|
||||
#define RT_CONSOLE_DEVICE_NAME "uart1"
|
||||
// </section>
|
||||
|
||||
// <section name="RT_USING_COMPONENTS_INIT" description="Using components init" default="true" >
|
||||
#define RT_USING_COMPONENTS_INIT
|
||||
// </section>
|
||||
|
||||
/* SECTION: finsh, a C-Express shell */
|
||||
#define RT_USING_FINSH
|
||||
/* Using symbol table */
|
||||
|
|
|
@ -43,14 +43,14 @@
|
|||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\obj\</OutputDirectory>
|
||||
<OutputDirectory>.\build\</OutputDirectory>
|
||||
<OutputName>rtthread-stm32</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>0</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>0</BrowseInformation>
|
||||
<ListingPath>.\</ListingPath>
|
||||
<ListingPath>.\build\</ListingPath>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
|
@ -71,9 +71,9 @@
|
|||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg1Name>fromelf --bin !L --output rtthread.bin</UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
|
|
|
@ -24,7 +24,6 @@ File 2,1,<..\..\src\ipc.c><ipc.c>
|
|||
File 2,1,<..\..\src\irq.c><irq.c>
|
||||
File 2,1,<..\..\src\kservice.c><kservice.c>
|
||||
File 2,1,<..\..\src\mem.c><mem.c>
|
||||
File 2,1,<..\..\src\memheap.c><memheap.c>
|
||||
File 2,1,<..\..\src\mempool.c><mempool.c>
|
||||
File 2,1,<..\..\src\object.c><object.c>
|
||||
File 2,1,<..\..\src\scheduler.c><scheduler.c>
|
||||
|
@ -48,7 +47,6 @@ File 4,1,<..\..\components\finsh\finsh_var.c><finsh_var.c>
|
|||
File 4,1,<..\..\components\finsh\finsh_vm.c><finsh_vm.c>
|
||||
File 4,1,<..\..\components\finsh\shell.c><shell.c>
|
||||
File 4,1,<..\..\components\finsh\symbol.c><symbol.c>
|
||||
File 5,1,<Libraries\CMSIS\CM3\CoreSupport\core_cm3.c><core_cm3.c>
|
||||
File 5,1,<Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c><system_stm32f10x.c>
|
||||
File 5,1,<Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c><stm32f10x_crc.c>
|
||||
File 5,1,<Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c><stm32f10x_rcc.c>
|
||||
|
@ -76,8 +74,6 @@ File 5,1,<Libraries\STM32F10x_StdPeriph_Driver\src\misc.c><misc.c>
|
|||
File 5,2,<Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_hd.s><startup_stm32f10x_hd.s>
|
||||
|
||||
|
||||
|
||||
|
||||
Options 1,0,0 // Target 'RT-Thread STM32'
|
||||
Device (STM32F103ZE)
|
||||
Vendor (STMicroelectronics)
|
||||
|
@ -103,18 +99,18 @@ Options 1,0,0 // Target 'RT-Thread STM32'
|
|||
EnvReg (ÿST\STM32F10x\)
|
||||
OrgReg (ÿST\STM32F10x\)
|
||||
TgStat=16
|
||||
OutDir (.\obj\)
|
||||
OutDir (.\build\)
|
||||
OutName (rtthread-stm32)
|
||||
GenApp=1
|
||||
GenLib=0
|
||||
GenHex=0
|
||||
Debug=1
|
||||
Browse=0
|
||||
LstDir (.\)
|
||||
LstDir (.\build\)
|
||||
HexSel=1
|
||||
MG32K=0
|
||||
TGMORE=0
|
||||
RunUsr 0 0 <>
|
||||
RunUsr 0 1 <fromelf --bin !L --output rtthread.bin>
|
||||
RunUsr 1 0 <>
|
||||
BrunUsr 0 0 <>
|
||||
BrunUsr 1 0 <>
|
||||
|
@ -136,7 +132,7 @@ Options 1,0,0 // Target 'RT-Thread STM32'
|
|||
ADSCMISC ()
|
||||
ADSCDEFN (STM32F10X_HD, USE_STDPERIPH_DRIVER)
|
||||
ADSCUDEF ()
|
||||
ADSCINCD (Libraries\STM32F10x_StdPeriph_Driver\inc;.;..\..\include;Libraries\CMSIS\CM3\CoreSupport;..\..\libcpu\arm\cortex-m3;..\..\libcpu\arm\common;..\..\components\finsh;Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x)
|
||||
ADSCINCD (Libraries\STM32F10x_StdPeriph_Driver\inc;..\..\components\CMSIS\Include;.;..\..\include;..\..\libcpu\arm\cortex-m3;..\..\libcpu\arm\common;..\..\components\finsh;Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x)
|
||||
ADSASFLG { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
|
||||
ADSAMISC ()
|
||||
ADSADEFN ()
|
||||
|
|
|
@ -31,18 +31,18 @@ Options 1,0,0 // Target 'RT-Thread STM32'
|
|||
EnvReg (ÿST\STM32F10x\)
|
||||
OrgReg (ÿST\STM32F10x\)
|
||||
TgStat=16
|
||||
OutDir (.\obj\)
|
||||
OutDir (.\build\)
|
||||
OutName (rtthread-stm32)
|
||||
GenApp=1
|
||||
GenLib=0
|
||||
GenHex=0
|
||||
Debug=1
|
||||
Browse=0
|
||||
LstDir (.\)
|
||||
LstDir (.\build\)
|
||||
HexSel=1
|
||||
MG32K=0
|
||||
TGMORE=0
|
||||
RunUsr 0 0 <>
|
||||
RunUsr 0 1 <fromelf --bin !L --output rtthread.bin>
|
||||
RunUsr 1 0 <>
|
||||
BrunUsr 0 0 <>
|
||||
BrunUsr 1 0 <>
|
||||
|
|
|
@ -43,14 +43,14 @@
|
|||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\obj\</OutputDirectory>
|
||||
<OutputDirectory>.\build\</OutputDirectory>
|
||||
<OutputName>rtthread-stm32</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>0</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\obj\</ListingPath>
|
||||
<ListingPath>.\build\</ListingPath>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
|
@ -71,9 +71,9 @@
|
|||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg1Name>fromelf --bin !L --output rtthread.bin</UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
|
|
|
@ -137,9 +137,6 @@ int main(void)
|
|||
/* disable interrupt first */
|
||||
rt_hw_interrupt_disable();
|
||||
|
||||
/* init system setting */
|
||||
SystemInit();
|
||||
|
||||
/* startup RT-Thread RTOS */
|
||||
rtthread_startup();
|
||||
|
||||
|
|
|
@ -40,14 +40,14 @@
|
|||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\obj\</OutputDirectory>
|
||||
<OutputDirectory>.\build\</OutputDirectory>
|
||||
<OutputName>rtthread-stm32</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>0</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>0</BrowseInformation>
|
||||
<ListingPath>.\obj\</ListingPath>
|
||||
<ListingPath>.\build\</ListingPath>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
|
@ -68,9 +68,9 @@
|
|||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name />
|
||||
<UserProg1Name>fromelf --bin !L --output rtthread.bin</UserProg1Name>
|
||||
<UserProg2Name />
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
|
@ -343,7 +343,7 @@
|
|||
<MiscControls />
|
||||
<Define>USE_STDPERIPH_DRIVER</Define>
|
||||
<Undefine />
|
||||
<IncludePath>.;..\..\components\finsh;..\..\include;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;Libraries\CMSIS\CM3\CoreSupport;Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F2xx;Libraries\STM32F2xx_StdPeriph_Driver\inc;applications;drivers</IncludePath>
|
||||
<IncludePath>.;..\..\components\CMSIS\Include;..\..\components\finsh;..\..\include;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;Drivers;Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F2xx;Libraries\STM32F2xx_StdPeriph_Driver\inc;applications</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
|
@ -458,13 +458,6 @@
|
|||
</Group>
|
||||
<Group>
|
||||
<GroupName>STM32_StdPeriph</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>core_cm3.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>Libraries\CMSIS\CM3\CoreSupport\core_cm3.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>system_stm32f2xx.c</FileName>
|
||||
|
@ -748,13 +741,6 @@
|
|||
<FilePath>..\..\src\mem.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>memheap.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\memheap.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>mempool.c</FileName>
|
||||
|
|
|
@ -43,14 +43,14 @@
|
|||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\obj\</OutputDirectory>
|
||||
<OutputDirectory>.\build\</OutputDirectory>
|
||||
<OutputName>rtthread-stm32</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>0</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>0</BrowseInformation>
|
||||
<ListingPath>.\obj\</ListingPath>
|
||||
<ListingPath>.\build\</ListingPath>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
|
@ -71,9 +71,9 @@
|
|||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg1Name>fromelf --bin !L --output rtthread.bin</UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
|
|
|
@ -68,9 +68,9 @@
|
|||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name />
|
||||
<UserProg1Name>fromelf --bin !L --output rtthread.bin</UserProg1Name>
|
||||
<UserProg2Name />
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
|
@ -713,13 +713,6 @@
|
|||
<FilePath>..\..\src\mem.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>memheap.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\src\memheap.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>mempool.c</FileName>
|
||||
|
|
|
@ -71,9 +71,9 @@
|
|||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg1Name>fromelf --bin !L --output rtthread.bin</UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
|
|
Loading…
Reference in New Issue