头像-8783

韩梅梅

  • 北京市北京市
  • 单片机 嵌入式 FPGA/CPLD 电源技术 模拟技术

个人成就

获得 9 次赞

帮助过303人

哪种GUI设计成为后期主流?

我个人比较看好touchgfx,免费,有比较丰富的库,可以基于图形化设计,减少人员的开发。STM32CUBEIDE和STM32CUBEMX都集成了touchgfx,可以在线下载。安装PC touchgfx,可以在PC独立开发,模拟运行,不知道啥时候正点原子能出一个touchgfx视频。

STM32使用calloc分配内存,但没有使用free释放有没有影响?

STM32使用calloc分配了一个内存,但没有使用free释放。关电重启能不能自动清除之前分配的内存? 或者说看门狗复位能不能自动清除之前分配的内存? 会不会重启或软件复位都不能清除之前申请内存,长期以往造成内存不够用申请内存失败?

关于STM32定时器发送脉冲的问题

关于STM32定时器发送脉冲,STM32如何才能同时发送4路不同频率,不同数目的脉冲呢?我用定时器+DMA这种方法控制4个步进电机时,第一个电机和第四个电机之间还是有时间间隔,跑个2分钟位置就乱了,做不到同步啊

STM32F103RC搭载FreeRTOS后,UART5的中断出现问题

    FreeRTOS中 使用Uart5中断 会出现一直进入中断中。我尝试裸机进行没有问题 尝试使用USART1也是正常; 请问这个是什么原因?

STM32的CAN通信发送邮箱一直是满的,陷入死循环

当前调试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();         } }

DM9000与PC机连接不稳定,出现断连的情况

DM9000与PC机通过socket连接不稳定,在正常工作时,发送大量数据会出现断连的情况,关机重启即可恢复,请问如何解决?

大家用ICCAVR编程,都用什么软件仿真,烧录啊

求推荐!!!! 大家用ICCAVR编程,都用什么软件仿真,烧录啊 我每次想使用AVRSTUDIO仿真都得去codevisio上在改,二者编译器不同,很麻烦啊!!!! 求推荐