之前的实验都是在英飞凌的demo上直接import进来的。初步体会到了dave的强大和现在IDE生成代码的先进流程。之前的那种用寄存器写单片机寄存器的时代好像真的不存在了,就像使用st 的cube直接可以生成stm32 的库文件,底层基本不用写。 我通过本次的实验也体会到了通过dave的强大功能,直接配置好硬件并自动生成代码。作为一个工程师,总觉得自己的从0掌握才算踏实,有时候遇到问题无法解决,经常会建议一个全新的工程测试一下,我想可以通过ide生成freRTOS的基本功能,使能2个task并分别驱动LED1 LED2.
启动dave,这个都是基于eclips界面,注意workspace的目录不能有中文,空格等。然后新建一个dave project,如果不是dave project,有很多集成的高级配置功能估计不好用。
输入project name。做出的 arm-gcc application 选择dave ceproject
选择对应的主cpu器件。
一个空的工程就建立好了。
现在通过help,install dave app libray来添加继承的app和库:
然后通过 dave菜单,点击add new app,可以添加对应的功能,里面有丰富的配置模块, 基本涵盖了常用的外设功能,
我注意还有一个motor libray,集成PMSM电机的控制库,估计应用单芯片xmc4800 直接开发ethercat伺服驱动器也是个很好的方案。
目前市面很多伺服驱动器方案都是单独一个dsp来做PMSM电机控制,再通过一个CPU来实现ethercat从站。这样成本就会高出很多,不知道英飞凌是否提供了这个评估方案,应该是很有竞争力的。还有就是这个单芯片xmc4800希望价格不要太贵, 要是单芯片价格超过2个stm32,也会让人想说爱你不容易。
添加 digital io 作为gpio驱动led
同样我也先添加了freeRTOS组件,想当年的cpu,做什么都要自己移植,现在ide管理真是太强大了,可以直接把底层的库,上层的操作系统,统统通过点几下鼠标完全配置好,这个效率的提升真的太大了。技术的升级带来的效率提高真是领先一个时代。
配置DIGITAL-IO为输出模式
通过菜单 dave ,manual pin allocator来配置 开发板上的LED1 和LED2驱动
free rtos我才用默认的配置 ticker为1000次每秒,其他的堆栈等都是默认配置。
然后点击dave菜单 生成 code
先build 测试一下。
找到DIGITAL_IO_ToggleOutput函数,选中函数,右键或者 按F3跳转到定义处。
官方的代码也集成了基本的测试用法,直接copy到main里就行了。
贴上代码:
int main(void)
{
DAVE_STATUS_t status;
uint32_t delay_count;;
status = DAVE_Init(); /* Initialization of DAVE APPs */
if(status != DAVE_STATUS_SUCCESS)
{
/* Placeholder for error handler code. The while loop below can be replaced with an user error handler. */
XMC_DEBUG("DAVE APPs initialization failed\n");
while(1U)
{
}
}
DIGITAL_IO_ToggleOutput(&LED2);
while(1U)
{
#if 1
DIGITAL_IO_ToggleOutput(&DIGITAL_IO_1); //toggles : 1 -> 0 (if initial output level is logic 1)
//Add application code here
for(delay_count = 0;delay_count<0xfffff;delay_count++);
DIGITAL_IO_ToggleOutput(&DIGITAL_IO_1); //toggles : 0 -> 1
//Add application code here
for(delay_count = 0;delay_count<0xfffff;delay_count++);
#endif
}
}
编译ok,准备下载到硬件,新建的工程需要对调试器配置一下,在工程名上右键,点击debug as,选择 debug configuration
在弹出的菜单直接双击GDB SEGGER J-Link Debugging可以生成 工程的debug配置,默认配置无需更改。
进入main
还可以在ide的 右上角 这3个按钮切换 ide编辑,pin 分配,debug模式 3个窗口切换。
如果不需要debug,直接在工程名上右键,选择run as dave c/c++ application,即可下载到xmc4800芯片flash里。
可以看到led1灯在闪烁了。重启后,还是falsh led。
在这一步里添加了freeRTOS,但是还没有跑起来,上次弄freeRTOS好多年了.下一步熟悉下freeRTOS,做两个任务调度起来。
不得不说,现在的开发真的太先进了。新硬件,新平台的入门门槛越来越低。可以让开发者更多的集中在开发,而不是搭建平台,从最繁琐的寄存器配置中完全脱离出来。真棒。
本帖最后由 tdatd 于 2019-1-14 15:34 编辑