我主要使用嵌入式应用程序(FPGA和微控制器),而且我对git和版本控制一般都很新.我已经开始学习它的强大功能,并希望为同事和朋友设置一些与我合作的项目.这些项目通常在集成开发环境(IDE)中开发,例如MPLAB-X,Code Composer Studio,Libero或Quartus,它们生成二进制文件,提供后台窃听和其他功能.我在一个存储库中设置项目时遇到了一些麻烦,其他人可以克隆它并开始处理它.我发现大多数推荐的.gitignore设置让你忽略主项目文件以及所有额外的二进制文件和双产品,如.tcl脚本和文本报告.通过忽略这些,我发现我正在删除协作者使用相同配置设置开发环境所需的所有信息.但是,如果我在存储库中跟踪它们,那么我的存储库会因为不重要的额外文件(通常是大文件)而陷入困境.这个问题有更好的解决方案吗?
我有用C编写的代码,但我需要查看汇编文件,以便我可以优化代码并确定某些函数需要多长时间.有谁知道快速提出汇编代码的方法?
我在函数中尝试了此操作,但在 MPLAB X IDE 中没有看到任何结果。为什么?在哪里可以找到打印的结果?我使用的是 pic32 Curiosity 开发板和 XC32。
int a = 5;
int b = 10;
printf("a = %d\nb = %d\n", a, b);
Run Code Online (Sandbox Code Playgroud)
有什么信息吗?提前致谢!
请考虑以下代码.
char message[]="foo";
void main(void){
message[] = "bar";
}
Run Code Online (Sandbox Code Playgroud)
为什么MPLAB IDE v8.63中存在语法错误?我只是想改变字符数组的值.
我在使 PIC32MX795F512L 的引导加载程序正常工作时遇到问题。
我基于 microchip 网站上的示例代码。
这是我应该写入内存的代码部分,到目前为止我已经验证了引导加载程序(解析十六进制文件很好,数据到达这一点但没有写入内存):
#define NVMOP_WORD_PGM 0x4001
// Write the data into flash.
Result = NVMemWriteWord(ProgAddress, WrData);
// Assert on error. This must be caught during debug phase.
if(Result != 0)
{
ASSERT(Result==0);
}
UINT NVMemWriteWord(void* address, UINT data)
{
UINT res;
NVMADDR = KVA_TO_PA((unsigned int)address);
// Load data into NVMDATA register
NVMDATA = data;
// Unlock and Write Word
res = NVMemOperation(NVMOP_WORD_PGM);
return res;
}
UINT __attribute__((nomips16)) NVMemOperation(UINT nvmop)
{
int int_status;
int susp;
// Disable …Run Code Online (Sandbox Code Playgroud) 我正在 MPLAB X v3.35 中为 PIC24F 开发一个项目。在过去几周的某个时候,编译器开始为编译中的每一行发出以下警告。编译器行中的什么可能导致这种情况?列号似乎没有指向任何有意义的东西,唯一不是由 MPLAB 生成的就是-DGIT_VERSION="v1.0-1-g14e8d84-d我在许多其他项目中使用的类似版本的标志。
"C:\Program Files (x86)\Microchip\xc16\v1.26\bin\xc16-gcc.exe" mcc_generated_files/oc4.c -o build/PICkit3-XP/production/mcc_generated_files/oc4.o -c -mcpu=24FJ64GA002 -MMD -MF "build/PICkit3-XP/production/mcc_generated_files/oc4.o.d" -g -omf=elf -DGIT_VERSION="v1.0-1-g14e8d84-d" -DXPRJ_PICkit3-XP=PICkit3-XP -legacy-libc -I"mcc_generated_files" -I"../inc" -I"../dn-rdm-slave.X" -O0 -msmart-io=1 -Wall -msfr-warn=off
<command-line>:0:13: warning: missing whitespace after the macro name
Run Code Online (Sandbox Code Playgroud) 我使用的是 ATMEGA16M1 微控制器和 MPLAB IDE。
我有以下函数可以写入端口。
void Lcd8_Write_String(char *a)
{
int i;
for(i=0;a[i]!='\0';i++)
Lcd8_Write_Char(a[i]);
}
void Lcd8_Write_Char(char a)
{
pinChange(RS,1); // => RS = 1
Lcd8_Port(a); //Data transfer
pinChange(EN,1); // => E = 1
_delay_ms(1);
pinChange(EN,0); // => E = 04
_delay_ms(1);
}
Run Code Online (Sandbox Code Playgroud)
我用 调用该函数Lcd8_Write_String("Hello World");。
我得到:
错误:将“Lcd8_Write_String”的参数 1 从指针传递到非封闭地址空间。
我该如何解决这个错误?
我已经能够在我的PIC上运行输出,并且当我设置各种输出锁存器高/低时,可以使一堆LED跳开和关闭.但是,我在阅读状态时遇到了很多困难.
请参阅下面的代码.我设置了我的配置,并将TRISC定义为输入,将TRISB定义为输出.在无限循环中,我检查RC6是高电平还是低电平,并根据结果将整个B锁存器设置为高电平或低电平.
#include <htc.h>
__CONFIG(1, FOSC_IRC & FCMEN_OFF & IESO_OFF);
__CONFIG(2, PWRTEN_OFF & BOREN_OFF & WDTEN_OFF);
__CONFIG(3, MCLRE_OFF);
__CONFIG(4, STVREN_ON & LVP_OFF & DEBUG_OFF);
__CONFIG(5, 0xFFFF);
__CONFIG(6, 0xFFFF);
__CONFIG(7, 0xFFFF);
void main(void)
{
TRISC = 0xFF; // input
TRISB = 0x00; // output
while (1)
{
if (PORTCbits.RC6 == 0)
LATB = 0b00000000;
else
LATB = 0b11111111;
}
return;
}
Run Code Online (Sandbox Code Playgroud)
代码编译良好,没有警告或错误.如果我的代码逻辑只是将锁存器设置为高电平和低电平然后工作正常,但我无法成功读取引脚的状态.
有任何想法吗?
我正在使用PIC18F14K50和MPLAB v8.43以及HiTech ANSI C编译器.
我的连接是+ 5V到VDD(引脚1),VSS(引脚20)到地.我有+ 5V到C6(引脚8),以及从B7(引脚10)到地的100K电阻和LED.要切换RC6,我将电线连接/断开连接到C6.
??????????
+5v -? 01 20 ?- gnd
-? 02 19 ?- …Run Code Online (Sandbox Code Playgroud) 如果返回语句在这个无限while(1)循环中,它返回到何处?更重要的是,我不知道while(1)循环可能被打破???
void __attribute__((interrupt, no_auto_psv)) _T3Interrupt(void)
{
int count;
IFS0bits.T3IF = 0; // clear Tmr3 interrupt flag
StopMotor();
IEC0bits.ADIE = 0; // disable ADC interrupt
IEC0bits.CNIE = 0; // disable CN interrupt
IEC0bits.T3IE = 0; // disable Tmr3 interrupt
T3CONbits.TON = 1; // restart tmr3
count = 0;
while (1)
{
if (IFS0bits.T3IF)
{
IFS0bits.T3IF = 0; // clear flag
if (count++ >= RESTART_COUNT)
{
IEC0bits.ADIE = 1; // enable ADC interrupt
IEC0bits.CNIE = 1; // enable CN interrupt
T3CONbits.TON = …Run Code Online (Sandbox Code Playgroud) 突然间,MPLAB X 中的“查找用法”功能不再对我有用。这很奇怪,有几个原因:
该项目最初是一个 MPLAB 8 项目,后来转换为 MPLAB X,正如我所说,该功能有效,我想不出任何可能导致其停止工作的环境变化(除了计算机重新启动之外)。
知道在哪里查看、更改哪些选项,或者有任何其他建议来恢复该功能吗?我发现它非常有帮助,所以我想以某种方式把它找回来。
谢谢!