-
PIC 单片机Linux下C编译环境求助:Linux版本的C编译器下载哪个
目前项目需要在linux下把C编译成hex(适配PIC内核),只需要编译环境,目前自己尝试了下载Linux版本MPLAB IDE加 XC8 C编译器,发现是需要额外安装JRE,使用MPLAB IDE环境才能编译成hex,能否不用IDE环境将C编译成hex,有大佬了解过这块吗
913浏览量 1回复量 关注量 -
蓝牙CH573F芯片,原厂BLE程序报错,为啥呀?
[img]file:///G:\1751224605\nt_qq\nt_data\Pic\2024-02\Ori\3c148a03220f401ebe00a2338cdb83e2.png[/img]
2302浏览量 5回复量 关注量 -
PIC单片机,仿真可以运行,上电就不能运行。
请教一个问题,我用的单片机是dspic33fj256mc710a,突然发现用仿真器仿真单片机可以正常运行,但是上电启动,MCU就不运行了。目前,试了2块板子都是这样;如果是软件的原因,会是什么原因?
1591浏览量 2回复量 关注量 -
RSL区别 sos
料号: PIC18F67K90-I/PT PIC18F67K90-I/PTRSL 应用: 热水器 麻烦各位大神请教下,这两款到底有什么区别?RSL从规格书上看是硅版本A3,没有这个尾缀的硅版本是什么?
2055浏览量 0回复量 关注量 -
CAN的FIFO如何同时接收超过32个报文
各位大佬,请教个问题:MCU是PIC32MX795F512L, 使用CAN1, FIFO1和FIFO2设置为接收FIFO,32个报文深度。 与过滤器0匹配的存放在FIFO1, 与过滤器1陪陪的存放在FIFO2, 过滤器0和过滤器1设置的ID和屏蔽器都相同。 我现在有50个报文需要同时接收。 但是测试的程序只能同时接收32个报文。 请问,如何设置或修改程序,才能同时接收超过32个报文呢。
2404浏览量 2回复量 关注量 -
刚学PIC,MPLAB X IDE编译报错,感觉不像是程序的问题
make[2]: *** [build/default/production/mcc_generated_files/mcc.p1] Error 1 make[2]: *** [build/default/production/mcc_generated_files/tmr0.p1] Error 1 make[2]: *** [build/default/production/mcc_generated_files/tmr2.p1] Error 1 make[2]: *** [build/default/production/mcc_generated_files/pwm6.p1] Error 1 terminate called after throwing an instance of 'std::invalid_argument' what(): No such file or directory
2989浏览量 4回复量 关注量 -
PIC33F 9位 485 通信发送时为什么进入接收中断
多次接收没问题,数据都能正确接收,发一次上传参数指令程序运行发送子程序后会改变接收中断中的值导致第二次上位机发送的参数保存位置错位,从而不能上传参数
1941浏览量 1回复量 关注量 -
家人们,PIC串口通信的程序出问题了 sos
刚学习PIC单片机的小白,用的dsPIC30f4011,程序是买板子送的,/*********************************************************************/ /*文件说明:uart发送接收*/ /*硬件配置: MCU: DSPIC30F4011, OSC: 使用片外部4M16倍频64MHz振荡器..*/ /*版本: v1.0*/ /*使用说明:P7短路帽连接AN0,P6短路帽连接为AVDD AVSS提供标准电源*/ /*修改记录:*/ /********************************************************************/ #include "p30f4011.h" #include "oled.h" _FOSC(0XC307);//FCKSM = 11;时钟切换禁止 0111=带有16倍频PLL的XT??16倍频PLL使能的XT晶振模式 (晶振频率为4 MHz到10 MHz _FWDT(0X0000);//关狗 _FBORPOR(0X3A3);//MCLREN禁止 欠压2.7V 上电延时64MS _FGS(0X03);// void UART_Init(void); void UART1_TX(unsigned char c); unsigned char UART1_RX(void);//接收数据 unsigned char Data; void System_Init(void)//系统初始化 { OSCCON = 0x33e0;//主振荡器 新振荡器主振荡器 4MHz64分频 PLL锁定(使能) TRISB = 0x0000; } void UART_Init(void) { U1MODE = 0x0000;//8位数据 无奇偶校验 1停止位 U1MODEbits.UARTEN = 1;//使能UART U1STA = 0x0000;//状态和控制寄存器 U1BRG = ((64000000/4/16)/9600)-1;//64MHz波特率9600(按照计算公式) IEC0bits.U1TXIE = 1;//发送中断允许 IPC2bits.U1TXIP = 7;//发送中断优先级7 U1STAbits.UTXEN = 1;// 使能发送 IEC0bits.U1RXIE = 1;//接收中断允许 IPC2bits.U1RXIP = 6;//接收中断优先级6 } void UART1_TX(unsigned char TXData)//发送数据 { while (U1STAbits.UTXBF); U1TXREG = TXData; } unsigned char UART1_RX(void)//接收数据 { unsigned char RXData; while (!U1STAbits.URXDA); RXData = U1RXREG; return RXData; } void Delay_1ms(unsigned int t)//t = 1000大概1s { unsigned int i,j; for(i = 0;i < t;i ++) for(j = 0;j < 100;j ++); } int main() { System_Init(); OLED_Init(); //初始化OLED OLED_Clear(); UART_Init(); disn(4,0,55);disn(5,0,69);disn(6,0,76);disn(7,0,67);disn(8,0,79);disn(9,0,77);disn(10,0,69);//Welcome // disn(1,1,36);disn(2,1,51);disn(3,1,48);disn(4,1,16);disn(5,1,45);disn(6,1,35);disn(7,1,53); while(1) { UART1_TX(UART1_RX()); Data = UART1_RX(); disn(4,1,Data/10000);disn(5,1,Data%10000/1000);disn(6,1,Data%1000/100);disn(7,1,Data%100/10);disn(8,1,Data%10); } } void __attribute__((__interrupt__, auto_psv)) _U1TXInterrupt(void)//发送中断 { IFS0bits.U1TXIF = 0; //清中断标志 } void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void)//接收中断 { IFS0bits.U1RXIF = 0; //清中断标志 } 最后的结果确实好像只能收发一个字节,收到1就能发1,但是收到123465这种一串就会出错,乱显示,如图: [img]https://pic2.zhimg.com/v2-f13e6aed7522dcae449131ab40a4dcfd_hd.png[/img] 请问各位大佬是哪里出错了呀程序,实在是找不到资料,找不到人问了
3452浏览量 0回复量 关注量 -
PIC47Q10读写EEPROM,我是用的MCC生成的代码,会有错误吗?
MCC生成的代码如下:void WR_EEPROM(uint16_t bAdd, uint8_t bData) { uint8_t GIEBitValue = INTCONbits.GIE; NVMADRU = 0x31; NVMADRH = (uint8_t)((bAdd & 0xFF00) >> 8); NVMADRL = (uint8_t)(bAdd & 0x00FF); NVMDATL = (uint8_t)(bData & 0xFF); NVMCON0bits.NVMEN = 1; INTCONbits.GIE = 0; NVMCON2 = 0x55; NVMCON2 = 0xAA; NVMCON1bits.WR = 1; while (NVMCON1bits.WR) { } NVMCON0bits.NVMEN = 0; INTCONbits.GIE =GIEBitValue; } uint8_t RD_EEPROM(uint16_t bAdd) { NVMADRU = 0x31; NVMADRH = (uint8_t)((bAdd & 0xFF00) >> 8); NVMADRL = (uint8_t)(bAdd & 0x00FF); NVMCON1bits.RD = 1; NOP(); NOP(); return (NVMDATL); }
3309浏览量 4回复量 关注量 -
为何不能在eeprom_write()函数设置断点breakpoint? sos
mplab x ide+picc 9.8+icd4环境下,在eeprom_write()语句上设置断点时,始终不能在该位置停下来。 如何调试这些语句呢? 请大神帮下忙。 下载视频
1476浏览量 0回复量 关注量