韩梅梅
获得 9 次赞
帮助过303人
我个人比较看好touchgfx,免费,有比较丰富的库,可以基于图形化设计,减少人员的开发。STM32CUBEIDE和STM32CUBEMX都集成了touchgfx,可以在线下载。安装PC touchgfx,可以在PC独立开发,模拟运行,不知道啥时候正点原子能出一个touchgfx视频。
STM32使用calloc分配了一个内存,但没有使用free释放。关电重启能不能自动清除之前分配的内存? 或者说看门狗复位能不能自动清除之前分配的内存? 会不会重启或软件复位都不能清除之前申请内存,长期以往造成内存不够用申请内存失败?
关于STM32定时器发送脉冲,STM32如何才能同时发送4路不同频率,不同数目的脉冲呢?我用定时器+DMA这种方法控制4个步进电机时,第一个电机和第四个电机之间还是有时间间隔,跑个2分钟位置就乱了,做不到同步啊
FreeRTOS中 使用Uart5中断 会出现一直进入中断中。我尝试裸机进行没有问题 尝试使用USART1也是正常; 请问这个是什么原因?
当前调试CAN 通信,用的是STM32F4的开发板,使用的也是正点的例程跑,自测用例回环模式通信没问题 我现在想和一个CAN 设备通信,修改为了CAN_MODE_NORMAL,使用的是扩展帧,然后过滤器设置的全为0,当前值挂载了一个传感器, 我想发一条消息,结果死在了发送邮箱的while循环里 CAN1_Mode_Init(CAN_SJW_1TQCAN_BS2_6TQCAN_BS1_7TQ6CAN_MODE_NORMAL); CAN_Config(); void CAN_Config(void) { CAN_FilterTypeDef sFilterConfig; /@@*##-2- Configure the CAN Filter ###########################################*/ sFilterConfig.FilterBank = 0; sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; sFilterConfig.FilterIdHigh = 0x0000; sFilterConfig.FilterIdLow = 0x0000; sFilterConfig.FilterMaskIdHigh = 0x0000; sFilterConfig.FilterMaskIdLow = 0x0000; sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; sFilterConfig.FilterActivation = ENABLE; sFilterConfig.SlaveStartFilterBank = 14; } u8 CAN1_Send_Msg(u8* msgu8 len) { u8 i=0; u32 TxMailbox; u8 message[8]; //TxHeader.StdId=0x00;//0X12; //标准标识符 TxHeader.ExtId=0x08042320;//PRESS_O_R_PERIP_ID;//0x12; //扩展标识符(29位) TxHeader.IDE=CAN_ID_EXT;//CAN_ID_STD; //使用标准帧 TxHeader.RTR=CAN_RTR_DATA; //数据帧 TxHeader.DLC=len; for(i=0;i<len;i++) { message=msg; } if(HAL_CAN_AddTxMessage(&CAN1_Handler &TxHeader message &TxMailbox) != HAL_OK)//发送 { return 1; } while(HAL_CAN_GetTxMailboxesFreeLevel(&CAN1_Handler) != 3) {} return 0; } 当前就是死在了这里,得到的值位0,所以不知道什么原因导致的。麻烦请教一下 while(HAL_CAN_GetTxMailboxesFreeLevel(&CAN1_Handler) != 3) {}
用数码管做了数字钟,运行没有什么问题,但是加了流水灯之后,数码管会闪烁,这是怎么回事?应该怎么解决?求大佬指教! 代码如下:#include<regx51.h> #define uint unsigned int #define uchar unsigned char sbit s1 = P3^2;//闹钟开关 sbit s2 = P3^3;//设置 sbit s3 = P3^4;//小时键 sbit s4 = P3^5;//分 sbit s5 = P3^6;//退出键 sbit fs = P3^0;//蜂鸣器 sbit d = P3^1;//小灯 unsigned char mfsw;//秒,分,时,计数器 uchar f_naos_nao;//闹钟分,时 bit flag_nao;//闹钟标志 void zuo(); void you(); void delay(uint i); //void ledscan(uchar huchar muchar s); void alarm(); void tiaojie(); void delay(uint i) { while(i--); } void zuo() {unsigned char d; unsigned char a = 0x01; for(d = 0;d<8;d++) { P0 = ~a; delay(1); a = a<<1; } if(a == 0) { a = 0x01; } } void ledscan(uchar huchar muchar s) reentrant { uchar LED[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f}; uint j; P1 = LED[s%10]; P2 = 0x7f; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[s/10]; P2 = 0xbf; for(j = 0;j<100;j++); P2 = 0xff; P1 = 0x40; P2 = 0Xdf; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[m%10]; P2 = 0xef; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[m/10]; P2 = 0xf7; for(j = 0;j<100;j++); P2 = 0xff; P1 = 0x40; P2 = 0xfb; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[h%10]; P2 = 0xfd; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[h/10]; P2 = 0xfe; for(j = 0;j<100;j++); P2 = 0xff; } void tiaojie() { if(s3 == 0) { ledscan(sfm); if(s3 == 0) { if(s == 23) s = 0; else s++; while(!s3)ledscan(sfm); } } else if(s4 == 0) { ledscan(sfm); if(s4 == 0) { if(f == 59) f = 0; else f++; while(!s4)ledscan(sfm); } } }void alarm() { //uchar a; if(flag_nao) { if(f==f_nao&&s==s_nao) { while(m<=5&&flag_nao) { fs = ~fs; ledscan(sfm);} } } } void t0() interrupt 1 { TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; w++; if(w == 20) { w = 0; m++; if(m == 60) { f++; m = 0; if(f == 60) {s++; f = 0; if(s == 24) s = 0;} } }zuo(); } void guan_naozhong() interrupt 0 { flag_nao = ~flag_nao; d = ~d; while(!s1)ledscan(sfm); } void naozhong()interrupt 2 { f_nao = f; s_nao = s; while(s5) { ledscan(s_naof_nao0); if(s3 == 0) { ledscan(s_naof_nao0); if(s3 == 0) { if(s_nao == 24)s_nao =0; else s_nao++; } while(!s3) ledscan(s_naof_nao0); } else if(s4 == 0) { ledscan(s_naof_nao0); if(s4 == 0) { if(f_nao == 59)f_nao =0; else f_nao++; } while(!s4) ledscan(s_naof_nao0); } } } void main() { TMOD = 0X01; TH0 =(65536 - 50000)/256; TL0 =(65536 - 50000)%256; TR0 = 1; ET0 = 1; IT1 = 1; IT0 = 0; EX1 = 1; EX0 = 1; PT0 = 1; EA = 1; f = 0; m = 0; fs = 0; flag_nao = 0; while(1) { ledscan(sfm); tiaojie(); alarm(); //zuo(); } }
求推荐!!!! 大家用ICCAVR编程,都用什么软件仿真,烧录啊 我每次想使用AVRSTUDIO仿真都得去codevisio上在改,二者编译器不同,很麻烦啊!!!! 求推荐