【GD32F310开发板试用】【001】FreeRTOS移植+“正点原子OLED任务线程”

首发极术社区。如对兆易创新GD32F310 MCU感兴趣,欢迎添加微信 aijishu2020 加入GD32技术讨论群。

感谢极术社区提供的SG32F310G测试板,尝试移植了一下FreeRTOS顺便点个OLED玩一下

准备工作:
先下载了官方提供的手册、DEMO、固件包,并通读了一下(注意,MDK版本要求比较高!为了找个能用的Keil折腾了很久):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qncrlnbX-1649928690075)(/img/bVbuwK)]

制作裸机点灯代码
前面已经有‘探路者’把这部分做完了,我就不再叙述了,不过还是要自己动手移植一下,这样可以了解片子与f103等常用的芯片的区别。
添加FreeRTOS部分
这是第一次真正意义上自己独立移植了一次FreeRTOS_,没有遇到太多的障碍:

使用的FreeRTOS版本是正点原子f103光盘里面的,9.0版本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lU5CWgCj-1649928690076)(/img/bVbuwL)]

解压缩后,只需要复制FreeRTOS,而用不到*-Plus:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F4h0wz5q-1649928690077)(/img/bVbuwM)]

FreeRTOS中,也有很多用不到的文件,请参考正点原子开源的FreeRTOS移植教程。

需要注意的地方是GD32的中断都放在了gd32f3x0_it.c中,需要屏蔽2个中断空函数,进而直接调用freeRTOS内的同名函数:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VDn8F9kY-1649928690077)(/img/bVbuwO)]

并在systick_handler中加入调用FreeRTOS的时钟函数:

void SysTick_Handler(void)
{
    //led_spark();
    delay_decrement();
	#if (INCLUDE_xTaskGetSchedulerState == 1)
		if (xTaskgetSchedulerState() != taskSCHEDULER_NOT_STARTED)
		{
	#endif
			xPortSysTickHandler();
	#if (INCLUDE_xTaskGetSchedulerState == 1)	
		}
	#endif
}

主要FreeRTOS的栈设置要合理:

#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 2 * 1024 ) )

Program Size: Code=6068 RO-data=6448 RW-data=112 ZI-data=4296

这样片子的可玩性还是挺高的。

####移植正点原子OLED代码:
这部分代码逻辑比较简单,看下正点原子的教程都可以很快搞定:
主要修改了正点原子通过位带操作控制引脚改为使用GD的库函数:

		    						  
//---------------------------OLED端口定义--------------------------  					   
#define OLED_CS(x)  gpio_bit_write(GPIOB,GPIO_PIN_0,(FlagStatus)(x));
#define OLED_RST(x) gpio_bit_write(GPIOA,GPIO_PIN_5,(FlagStatus)(x));
#define OLED_DC(x)  gpio_bit_write(GPIOB,GPIO_PIN_1,(FlagStatus)(x));
#define OLED_WR(x)  gpio_bit_write(GPIOB,GPIO_PIN_4,(FlagStatus)(x));
#define OLED_RD(x)  gpio_bit_write(GPIOB,GPIO_PIN_5,(FlagStatus)(x));
最终完成移植:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zDjPVzbM-1649928690078)(/img/bVbuw7)]!

总结

现在芯片都比较成熟,性能都过剩,这款芯片提供的资料也都够用,对于上手使用比较方便。后面自己做一些手表、物联网小产品,可以玩一下。

附上工程文件:
链接:https://pan.baidu.com/s/1Tk6IPrJowkRFcB7x0sQt_g
提取码:g5v7

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值