GD32F205在IAR上移植FreeRTOS

简述:

1、主芯片:GD32F205VET6
2、编译器:IAR V8.40.1
3、系统:FreeRTOS V9.0

第一步:准备最简工程与系统

1、准备一个GD32F205VET6最简单的IAR工程;
2、准备FreeRTOS V9.0 源码,下载链接

第二步:拷贝源码

1、将FreeRTOS V9.0 源码全部拷贝到最简工程;
在这里插入图片描述

2、删除不必要的文件
删除“portable”文件夹中多余文件,留下“IAR”、"MemMang”
在这里插入图片描述

第三步:编译器IAR配置

1、添加编译器工程目录和文件;
在这里插入图片描述

2、添加头文件路径
在这里插入图片描述
在这里插入图片描述

3、配置仿真器;
在这里插入图片描述

第四步:工程代码修改

1、拷贝FreeRTOS系统源码中“Demo”中的“CORTEX_STM32F103_IAR”中的“FreeRTOSConfig.h”文件拷贝到自己的工程中的“FreeRTOS”文件中的“include”中;
在这里插入图片描述
2、添加系统宏定义
在“FreeRTOSConfig.h”文件添加系统宏定义
在这里插入图片描述
在这里插入图片描述
都知道大家喜欢源码,就把需要添加的贴出来吧:

#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
    #include <stdint.h>
    extern uint32_t SystemCoreClock;
#endif

#define configCPU_CLOCK_HZ			( SystemCoreClock )

#define xPortPendSVHandler 	PendSV_Handler
#define vPortSVCHandler 	SVC_Handler

3、注释重复定义函数;
把“gd32f20x_it.c”文件中的“SVC_Handler”、“PendSV_Handler”函数注释掉
在这里插入图片描述

4、添加系统滴答时钟函数;
在“gd32f20x_it.c”文件中的“SysTick_Handler”函数中添加FreeRTOS系统滴答时钟函数“xPortSysTickHandler”
在这里插入图片描述
5、在main函数创建task
在这里插入图片描述

第五步:编译工程

1、编译工程并下载调试;
在这里插入图片描述

参考:
1、正点原子《STM32F1 FreeRTOS开发手册_V1.1.pdf》
2、网友总结

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于GD32F205芯片的CAN通信代码示例: 首先需要在代码中包含以下头文件: ``` #include "gd32f20x.h" #include "gd32f20x_can.h" ``` 然后需要初始化CAN模块: ``` /* CAN0 and CAN1 default configuration */ can_parameter_struct can_parameter; can_parameter_struct_struct_init(&can_parameter); can_parameter.time_triggered = DISABLE; can_parameter.auto_bus_off_recovery = ENABLE; can_parameter.auto_wake_up = ENABLE; can_parameter.auto_retrans = ENABLE; can_parameter.receive_fifo_number = CAN_FIFO0; can_parameter.transmit_fifo_order = DISABLE; can_parameter.working_mode = CAN_NORMAL_MODE; can_parameter.resync_jump_width = CAN_BT_SJW_1TQ; can_parameter.time_segment_1 = CAN_BT_BS1_11TQ; can_parameter.time_segment_2 = CAN_BT_BS2_4TQ; can_parameter.prescaler = 3; can_init(CAN0, &can_parameter); can_init(CAN1, &can_parameter); ``` 接下来需要配置CAN的过滤器: ``` /* CAN0 filter configuration */ can_filter_parameter_struct can_filter_parameter; can_filter_parameter.filter_number = 0; can_filter_parameter.filter_mode = CAN_FILTERMODE_MASK; can_filter_parameter.filter_bits.higher_bits = 0x0000; can_filter_parameter.filter_bits.lower_bits = 0x0000; can_filter_parameter.filter_mask_bits.higher_bits = 0x0000; can_filter_parameter.filter_mask_bits.lower_bits = 0x0000; can_filter_parameter.filter_fifo_number = CAN_FIFO0; can_filter_parameter.filter_enable = ENABLE; can_filter_init(&can_filter_parameter); ``` 接着可以启动CAN模块: ``` /* enable CAN0 */ can_enable(CAN0, ENABLE); /* enable CAN1 */ can_enable(CAN1, ENABLE); ``` 可以使用以下函数发送CAN消息: ``` /* transmit CAN message */ can_trasnmit_message_struct transmit_message; transmit_message.tx_sfid = 0x321; transmit_message.tx_efid = 0x0000; transmit_message.tx_ft = CAN_FT_DATA; transmit_message.tx_ff = CAN_FF_STANDARD; transmit_message.tx_dlen = 8; transmit_message.tx_data[0] = 0x11; transmit_message.tx_data[1] = 0x22; transmit_message.tx_data[2] = 0x33; transmit_message.tx_data[3] = 0x44; transmit_message.tx_data[4] = 0x55; transmit_message.tx_data[5] = 0x66; transmit_message.tx_data[6] = 0x77; transmit_message.tx_data[7] = 0x88; can_message_transmit(CAN0, &transmit_message); ``` 可以使用以下函数接收CAN消息: ``` /* receive CAN message */ can_receive_message_struct receive_message; can_message_receive(CAN0, CAN_FIFO0, &receive_message); ``` 以上是基于GD32F205芯片的CAN通信代码示例。请根据具体需求进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值