问题标签 [xc16]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2071 浏览

embedded - 如何在 mplab x ide、XC16 编译器中使用 malloc 分配内存?

谁能给我一个使用malloc分配内存的示例代码?IDE:mplab x ide 编译器:XC16 编译器 MCU:PIC24F

提前致谢。

0 投票
1 回答
432 浏览

pic - XC16 写入 MPLAB 中的文件

我正在尝试将数据写入 MPLAB X IDE v3.61 中的文本文件。我正在使用最新版本的 XC16 编译器。我遇到的问题是,当我运行程序时,没有在我的项目文件夹中创建文本文件“BUFFER”。

0 投票
1 回答
353 浏览

gcc - GCC 扩展 asm 区分文字与寄存器

我发现自己广泛使用内联 asm,并且经常希望能够在给定的 asm 位中使用寄存器文字,但是我不知道如何使用 Microchip XC16 套件将其作为选项。

据我所知,您需要手动对文字符号进行编码#,这与前缀不兼容。这意味着以下代码无法编译:

但以下是:

这当然与寄存器不兼容:

所以在我看来,Microchip 没有遵循 GCC 约定,我认为文字符号应该嵌入到操作数中,这使得它特别难以使用。

我想知道机会..有人对如何解决这个问题有任何好主意吗?

现在,我将__builtin_constant_p作为附加参数传递,然后.if在 asm 中按如下方式进行传递,但要说它变得笨拙快速将是轻描淡写。

而且我什至不相信 GCC 保证这%1将是一个文字 ifisk是真的,这意味着必须 if-then-else 将它全部挡在 C 端......叹息。


澄清MOV只是一个示例说明。这些处理器 (dsPIC33E) 具有零开销的单指令和多指令循环,需要 asm 才能利用,其语法如下所示:

这个 memcpy 循环需要cnt+1循环来执行,由于流水线,它实际上比完全展开循环快两倍,比每次迭代分支快 6 倍。除了它们的多指令 DO 循环变体外,它们对于充分利用这些处理器非常重要。

0 投票
0 回答
638 浏览

usb - dspic33EP 上的 CDC USB

我正在尝试让我的照片通过 USB 与我的 PC(MacBook Pro)进行通信。这是我自制电路板的原理图,使用 dsPIC33EP256MU806: 在此处输入图像描述 我已经调整了 microchip 的 MLA 库,特别是 cdc_basic 固件。以下是我对代码所做的更改:

  • 将 ACLKCON3 更改为 0x24C3,因为我使用的是 16MHz 晶体振荡器。
  • 删除了所有与按钮和 LED 相关的代码。
  • 代码没有编译,所以我不得不添加一些#includes。

这是我的编译指示配置:

这是我的主循环:

其余代码在这里:https ://github.com/RuiLoureiro/CDC_USB_dsPIC33e256MU806

当我使用ls /dev/tty.*列出当前连接到我的 macbook 的 USB 设备时,图片没有显示。任何帮助将不胜感激。

0 投票
1 回答
341 浏览

c - MPLAB 无法合并 .s 和 .c 文件

我在我的 Mac 上使用 MPLAB v4.0.5 和 XC16 v1.33 编译器。我有两个文件, thom5409_disc2_main_v001.s 和 thom5409_disc2_main_v001.c 。

提供以下代码是为了帮助我们入门,我班上的其他学生能够在不进行任何更改的情况下获得相同的确切代码来构建,所以我认为这是我的 MPLAB 版本或编译器的问题。

所以基本上,我的汇编代码如下所示: 汇编代码

我的c代码看起来像这样 在此处输入图像描述

当我尝试构建它时,我收到以下错误:

multiple definition of '_counter'multiple definition of '_myAsmFunc'

当我删除程序集文件中说 .global _myAsmFunc.global _counter

我收到以下错误: undefined reference to '_main'undefined reference to '_myGlobalVar'

我已经尝试调试并找出解决方案,但我似乎无法弄清楚。如前所述,其他同学使用MPLAB和XC编译器的各种机器和版本都能够让它工作,所以我不认为这是一个代码问题,但也许我必须稍微更改一下代码MPLAB 还是编译器?

0 投票
1 回答
266 浏览

c++ - 使用 Microchip XC16 编译器将 foo.cpp 构建为 C 代码

我有一些在 C++ Windows 应用程序和 XC16 C 应用程序之间共享的代码。源代码的编写方式使得它可以在 MSVC 和 XC16 下干净地编译(适当地使用__cplusplus宏)。

问题是 XC16 拒绝构建foo.cpp。我必须将文件复制foo.c回来。这对版本控制造成了严重破坏,并且当复制功能在构建过程中自动化时,会使 ide 中的代码编辑出现问题。

有没有办法让 XC16 构建(作为 C)扩展名为 cpp 的文件?(注意头文件是foo.h,所以这不是问题)。

0 投票
2 回答
173 浏览

c - PIC24F16KA102 上的外部中断源

我正在尝试使用外部中断源,我编写了一个小程序来测试中断。当我启动程序时,RB0 设置为低,RB1 设置为高。如果我将 RB7 设置为高电平,则必须产生一个中断,将 RB0 和 RB1 的逻辑状态反转。我不知道为什么中断不起作用。我已经配置了所有寄存器,还缺少什么吗?编译器是xc16。

谢谢。

这是代码:

0 投票
1 回答
135 浏览

microchip - c lang if 条件 1 或条件 2 和条件 3 或条件 4

试图制定正确的 if 条件测试。我只想在两个楼层锁都在线(不报告 eStatusLockUnknown)时采取行动。我试过的两个测试如下。调试时,我可以看到两个楼层锁都在报告*.lockState = eStatusLockIndeterminate,但我没有陷入我的操作代码。Microchip xc16 v1.25 编译器。

0 投票
1 回答
81 浏览

debugging - 用于 pic30/xc16 的 objcopy - 在哪里可以找到类似物

我正在使用 PIC24 上的一个非独立项目,该项目需要引导加载程序,我想使用引导加载程序对其进行调试。我能够使用引导加载程序生成一个包含应用程序代码的 .hex 文件,注册一个在编译后执行的自定义脚本。

如果我现在在菜单中选择“Launch Debugger Main Project”,调试器正常执行摘要代码甚至到达应用程序启动,但不显示调试信息,因为它不包含在 .hex 文件中。但是如果我选择“调试主项目”,调试器正在加载包含调试信息但不包含加载程序代码的 .elf 文件,而不是制造的 .hex 文件。

有没有办法强制调试器从一个文件加载调试信息并从另一个文件加载可执行代码?或者有没有办法在编译的 .elf 文件中添加一个部分或完全替换其中的代码?pic30 和 xc16 都没有“objcopy”实用程序,是否有类似物?

这些是有问题的图片:

[1] https://s15.postimg.cc/59jynpikr/2018-06-27-0001.png

[2] https://s15.postimg.cc/kv1a7q7ej/2018-06-27-0002.png

[3] https://s15.postimg.cc/idpj0hid7/2018-06-27-0003.png

[4] https://s15.postimg.cc/8t5wdm0qz/2018-06-27-0004.png

[5] https://s15.postimg.cc/np4fl7rl7/2018-06-27-0005.png

[6] https://s15.postimg.cc/xz6ukgwwb/2018-06-27-0006.png

[7] https://s15.postimg.cc/bn91r35i3/2018-06-27-0007.png

0 投票
2 回答
1097 浏览

uart - 如何从 uart 接收超过 5 个字节?

  • 微控制器:dsPIC30F4013
  • 编译器:xc16

我试图从 UART 接收一个数组,但我只得到前 5 个字节。

我知道接收缓冲区有 4 个字深,但我也需要接收其他字节。也许使用循环缓冲区,但我不知道如何使用它。

谁能帮我获取数组中的所有字节?

这是我当前的代码:

我将每个数组位置发送到 PC:

串行监视器 串行监视器

对不起,我的英语不好。