CH579M移植RT-THREAD实战笔记(KEIL5环境)

确保能用的移植后的blink例子代码包见下载链接: 

1. 下载添加RT-THREAD支持包

 2. 在官方GPIO例程基础导入RT-THREAD

 

 3. 配置rtconfig.h文件

 

 

 4. 修改board.c文件

配置存储空间


#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
/*
 * Please modify RT_HEAP_SIZE if you enable RT_USING_HEAP
 * the RT_HEAP_SIZE max value = (sram size - ZI size), 1024 means 1024 bytes
 */
#define RT_HEAP_SIZE 1024

// ADDED 
#define CH579M_SRAM1_START              (0x20000000)      
#define CH579M_SRAM1_END                (CH579M_SRAM1_START + 32 * 1024)   // ???? = 0x20000000(??) + 32K(RAM??)

#if defined(__CC_ARM) || defined(__CLANG_ARM)
extern int Image$$RW_IRAM1$$ZI$$Limit;                   // RW_IRAM1,???????????????
#define HEAP_BEGIN      ((void *)&Image$$RW_IRAM1$$ZI$$Limit)
#endif

#define HEAP_END                       CH579M_SRAM1_END



RT_WEAK void *rt_heap_begin_get(void)
{
    return HEAP_BEGIN;
}

RT_WEAK void *rt_heap_end_get(void)
{
    return (rt_uint32_t*)HEAP_END;
}
#endif

配置硬件驱动

void rt_hw_board_init()
{
	
    /* ³õʼ»¯SysTick */
    SysTick_Config( FREQ_SYS / RT_TICK_PER_SECOND );	
    
	
/* µ÷ÓÃ×é¼þ³õʼ»¯º¯Êý (use INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
#endif
    
#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
	rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
#endif
    
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
    rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#endif


    GPIOA_SetBits(GPIO_Pin_9);
    GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);			// RXD-ÅäÖÃÉÏÀ­ÊäÈë
    GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);		// TXD-ÅäÖÃÍÆÍìÊä³ö£¬×¢ÒâÏÈÈÃIO¿ÚÊä³ö¸ßµçƽ
    
	UART1_DefInit();
}

rtconfig.h文件里定义重映射端口号

#define RT_CONSOLE_DEVICE_NAME      "uart1" 

5. 改main.c

主循环


int main()
{
	
   rt_err_t result;

  

GPIOB_ModeCfg( GPIO_Pin_0, GPIO_ModeOut_PP_20mA );//PB0ÍÆÍìÊä³ö
		
rt_kprintf("RT thread sample.\n");

    led1_thread =                          /* Ï߳̿ØÖÆ¿éÖ¸Õë */
        rt_thread_create( "led1",              /* Ïß³ÌÃû×Ö */
                          led1_thread_entry,   /* Ïß³ÌÈë¿Úº¯Êý */
                          RT_NULL,             /* Ïß³ÌÈë¿Úº¯Êý²ÎÊý */
                          512,                 /* Ïß³ÌÕ»´óС */
                          21,                   /* Ï̵߳ÄÓÅÏȼ¶ */
                          10);                 /* Ïß³Ìʱ¼äƬ */

    /* Æô¶¯Ị̈߳¬¿ªÆôµ÷¶È */
    if (led1_thread != RT_NULL)
		{
        rt_thread_startup(led1_thread);
		rt_kprintf("led thread start.\n");}
    else
        return -1;
	}

 定义blink任务


static void led1_thread_entry(void* parameter)
{
    //char *str;
    rt_uint32_t len ;

    	rt_kprintf("led thread init.\n");
    while (TRUE)
    {
       

						rt_kprintf("led thread running.\n");
			 GPIOB_InverseBits(GPIO_Pin_0);			
			rt_thread_mdelay(500); 


    }

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海里的鱼2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值