移植RT-Thread nano到CW32L083

因为工程的需要用到操作系统,这里可以选择freertos或者rt-thread。我这里选用了rt-thread。下面就如何用移植,分享如下:
1、打开一个cw32l083的blink工程。
2、打开manage run-time environment工具,选择rt-thread,我们这里只选择kenel。
3、打开rtos目录下的board.c文件,添加main.h头文件的引用、添加系统心路中断函数、添加systick初始化。
4、打开rtthconfig.h中内存管理的选项:
5、注释掉interrupts_cw32l083.c中hardfault_handler、pendsv_handler两个函数,避免出现得新定义的错误
6、编译后零错误零警告:
8、在main.c中添加rtthreah.h的头文件引用,再添回两个任务函数,并在主程序中启动:
struct rt_thread thread1;struct rt_thread thread2;char thread1_stack[512];char thread2_stack[512];void thread1_entry(void*param){while (1){ printf(thread1 is runningrn); rt_thread_mdelay(200);}}void thread2_entry(void*param){while (1){ printf(thread2is runningrn); rt_thread_mdelay(400);}}void thread1_init(void){ rt_err_t fd=rt_thread_init(&thread1,thread1,&thread1_entry,0,&thread1_stack[0],sizeof(thread1_stack),10,10); if(fd < 0) { printf(thread1 init is fail rn); } else { printf(thread1init is success rn); } rt_thread_startup(&thread1);}void thread2_init(void){ rt_err_t fd=rt_thread_init(&thread2,thread2,&thread2_entry,0,&thread2_stack[0],sizeof(thread2_stack),10,10); if(fd < 0) { printf(thread2 init is fail rn); } else { printf(thread2init is success rn); } rt_thread_startup(&thread2);}int32_t main(void){ //配置rcc rcc_configuration(); //配置gpio gpio_configuration(); //配置uart uart_configuration(); printf(cw32l083 uart printf example); thread1_init(); thread2_init(); while(1) { }}【实验效果】
编译后下载到开发板,打开串口综端,就可以看到两个任打印出相应的信息。
【总结】
移植rt-threadg nano到cw32l083的主要的就是需要添加systick定时器的中断函数,以及systick的配置。


2020款iPhone曝光将取消刘海屏实现无刘海的屏幕观感
冰箱市场不断下滑 低价竞争成市场主基调
东微半导前三季度营收净利双降 将加强先进工艺产品研发
咖博士咖啡机: 专注商用咖啡机领域,成就国产专业咖啡机品牌
高栅负压的电子管功放电路图
移植RT-Thread nano到CW32L083
中国移动在深圳率先实现5G独立组网商用网络能力
可焊性试验方法指引
Android8.0或将迎来安卓史上重大变革,加强“体验”
哈工大造出柔性机器人,能和象鼻一样灵活运动
Altera、Lattice、Xilinx角逐低成本FPGA市场
人工智能浪潮下零售业的智慧化转型
苹果计划将 LTPO 应用于明年四款新 iPhone 中的两款顶级机型
真空传感器结构_真空传感器的工作原理
微波射频公司有哪些?
华为2021开发者大会最新消息,HMS Core6发布打造全场景万物智联
陶瓷滤波器介绍及测试方法
码垛机器人相比于人工的优势是什么
大功率升压模块与mppt太阳能升压控制器对比分析哪个好
基于32位浮点DSP芯片TMS320C6713实现语音编解码系统的设计