找回密码
 立即注册
查看: 865|回复: 10

关于 32G12K128 取余计算 不运行的问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:47
  • 最近打卡:2025-04-30 20:21:43

9

主题

62

回帖

697

积分

高级会员

积分
697
发表于 2024-10-22 20:21:24 | 显示全部楼层 |阅读模式
基于官方资料 STC_USB_LIBRARY_DEMO\STC_CDC_INTERRUPT_LIBRARY\stc32g_cdc_interrupt_demo  进行usb功能测试。
一下是自己写了一个 usb接收到长度  进行长度数值打印。num预计取值范围1-25.
完整代码放在二楼,望大神解答一下为啥我的取余会直接卡死。
错误情况查看代码后的注释。

void aixx(u8 num)
{

if(num >= 10)
{
        
outnum12[0] = (num/100)+0x30;
        outnum12[1] = num;
        USB_SendData(outnum12,2);

        //以上是可以执行的
        
        //一下是错误的
        
//P2=(num-( (num/100)*100)) /10;   // 错误不会继续执行   我试了一下 去掉/10  可以运行
//        P2=num%100;    //错误  不会继续执行了
        
        //以下修改可运行
//           num = 15;
        //        P2=num%100;    //这样可以继续执行了
        
        
        //           num = 15;
//P2=(num-( (num/100)*100)) /10;     //这样可以继续执行了
        

        outnum12[1] =0x31;
//outnum12[2] =(num%10)+0x30;

}
else
{
outnum12[0] =0x30;
        outnum12[1] = 0x30;
outnum12[2] = num + 0x30;

}

}
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:47
  • 最近打卡:2025-04-30 20:21:43

9

主题

62

回帖

697

积分

高级会员

积分
697
发表于 2024-10-22 20:21:44 | 显示全部楼层
本帖最后由 琪琪鸭 于 2024-10-22 20:23 编辑

#include "stc32g.h"
#include "stc32_stc8_usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
        u8 outnum12[64];
void main()
{
    P_SW2 |= 0x80;
   
    P0M1 = 0x00;   P0M0 = 0x00;
    P1M1 = 0x00;   P1M0 = 0x00;
    P2M1 = 0x00;   P2M0 = 0x00;
    P3M1 = 0x00;   P3M0 = 0x00;
    P4M1 = 0x00;   P4M0 = 0x00;
    P5M1 = 0x00;   P5M0 = 0x00;
    P6M1 = 0x00;   P6M0 = 0x00;
    P7M1 = 0x00;   P7M0 = 0x00;

    usb_init();                                     //USB CDC 接口配置
   
    IE2 |= 0x80;                                    //使能USB中断
    EA = 1;
   
    while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置

    while (1);
}


void aixx(u8 num)
{

if(num >= 10)
{
      
outnum12[0] = (num/100)+0x30;
        outnum12[1] = num;
        USB_SendData(outnum12,2);

        //以上是可以执行的
      
        //一下是错误的
      
//P2=(num-( (num/100)*100)) /10;   // 错误不会继续执行   我试了一下 去掉/10  可以运行
//        P2=num%100;    //错误  不会继续执行了
      
        //以下修改可运行
//           num = 15;
        //        P2=num%100;    //这样可以继续执行了
      
      
        //           num = 15;
//P2=(num-( (num/100)*100)) /10;     //这样可以继续执行了
      

        outnum12[1] =0x31;
//outnum12[2] =(num%10)+0x30;

}
else
{
outnum12[0] =0x30;
        outnum12[1] = 0x30;
outnum12[2] = num + 0x30;

}

}

/************************************************
函数功能:USB-CDC串口接收数据的回调函数
函数描述:回调函数由USB中断在接收到串口数据时自动调用
          回调函数处理完成串口数据后需要返回1
函数返回:返回1:USB中断服务程序自动完成后续的收尾工作
          返回0:USB会暂停接收串口数据,直到用户自行调用
                 usb_OUT_done()函数后USB才会重新恢复接收数据
注意事项:当函数返回1时用户无需调用usb_OUT_done()
          只有返回0时才需要调用usb_OUT_done()进行手动收尾
          强烈建议usb_OUT_callback返回1
************************************************/
BOOL usb_OUT_callback()
{
aixx(OutNumber);
         USB_SendData(outnum12,3);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
      
    USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
      
   
    return 1;
}

但是    outnum12[2] = (num %10)   + 0x30;  可以正确执行。此时num值=12

[22:19:54.417]发送→                 123456781112
[22:19:54.418]接收←012            123456781112

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:47
  • 最近打卡:2025-04-30 20:21:43

9

主题

62

回帖

697

积分

高级会员

积分
697
发表于 2024-10-22 20:22:42 | 显示全部楼层
芯片型号   屠龙刀三。2  测试板


正在检测目标单片机 ...
  单片机型号: STC32G12K128

当前芯片的硬件选项为:
  . 系统ISP工作频率: 24.000MHz
  . 内部IRC振荡器的频率: 24.000MHz
  . 掉电唤醒定时器的频率: 32.575KHz
  . 振荡器放大增益使能
  . 用户EEPROM大小被设置为 5 K
  . P3.2和P3.3与下次下载无关
  . 上电复位时增加额外的复位延时
  . 复位引脚仍为复位脚
  . 检测到低压时不复位,可产生低压中断
  . 低压检测门槛电压 : 2.00 V
  . 上电复位时,硬件不启动内部看门狗
  . 上电自动启动内部看门狗时的预分频数为 : 256
  . 空闲状态时看门狗定时器停止计数
  . 下次下载用户程序时,不擦除用户EEPROM区
  . 下次下载用户程序时,没有相关的端口控制485
  . 下次下载时不需要校验下载口令
  . 内部参考电压: 1188 mV (参考范围: 1100~1300mV)

  单片机型号: STC32G12K128

正在擦除目标区域 ... 完成 !                [2.652"]
正在下载用户代码 ... 完成 !                [0.437"]
正在设置硬件选项 ... 完成 !                [0.016"]

更新后的硬件选项为:
  . 系统ISP工作频率: 24.000MHz
  . 内部IRC振荡器的频率: 24.000MHz
  . 掉电唤醒定时器的频率: 32.575KHz
  . 振荡器放大增益使能
  . 用户EEPROM大小被设置为 5 K
  . P3.2和P3.3与下次下载无关
  . 上电复位时增加额外的复位延时
  . 复位引脚仍为复位脚
  . 检测到低压时不复位,可产生低压中断
  . 低压检测门槛电压 : 2.00 V
  . 上电复位时,硬件不启动内部看门狗
  . 上电自动启动内部看门狗时的预分频数为 : 256
  . 空闲状态时看门狗定时器停止计数
  . 下次下载用户程序时,不擦除用户EEPROM区
  . 下次下载用户程序时,没有相关的端口控制485
  . 下次下载时不需要校验下载口令
  . 内部参考电压: 1188 mV (参考范围: 1100~1300mV)
芯片出厂序列号 : F7E3C92200A702

  单片机型号: STC32G12K128
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:238
  • 最近打卡:2025-05-01 13:11:43

22

主题

283

回帖

901

积分

高级会员

积分
901
发表于 2024-10-23 00:40:30 | 显示全部楼层

你试下
stc32g_cdc_interrupt_demo.zip (81.98 KB, 下载次数: 58)
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:47
  • 最近打卡:2025-04-30 20:21:43

9

主题

62

回帖

697

积分

高级会员

积分
697
发表于 2024-10-24 21:16:50 | 显示全部楼层

谢谢大神  你的程序怎么改都是好用的。。。但是没找到啥不一样的地方,我把我的mian.c复制进去都是好用的。希望大神指点一二,难道是我的keill缺东西吗?谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:47
  • 最近打卡:2025-04-30 20:21:43

9

主题

62

回帖

697

积分

高级会员

积分
697
发表于 2024-10-24 21:18:18 | 显示全部楼层

刚开始是开心的找问题 ,直到20分钟没看出来问题, 现在已经哭一个小时了{:5_270:}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:238
  • 最近打卡:2025-05-01 13:11:43

22

主题

283

回帖

901

积分

高级会员

积分
901
发表于 2024-10-25 00:29:35 来自手机 | 显示全部楼层
琪琪鸭 发表于 2024-10-24 21:18
刚开始是开心的找问题 ,直到20分钟没看出来问题, 现在已经哭一个小时了 ...

不使用 REMOVEUNUSED
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:47
  • 最近打卡:2025-04-30 20:21:43

9

主题

62

回帖

697

积分

高级会员

积分
697
发表于 2024-10-25 19:39:57 | 显示全部楼层
邮*** 发表于 2024-10-25 00:29
不使用 REMOVEUNUSED

看到了看到了  谢谢大神。   我说怎么你工程多了41个警告。   但是还是不明白为啥这个设置导致的取余错误。。。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:238
  • 最近打卡:2025-05-01 13:11:43

22

主题

283

回帖

901

积分

高级会员

积分
901
发表于 2024-10-25 20:31:21 | 显示全部楼层
本帖最后由 邮箱 于 2024-10-25 20:33 编辑
琪*** 发表于 2024-10-25 19:39
看到了看到了  谢谢大神。   我说怎么你工程多了41个警告。   但是还是不明白为啥这个设置导致的取余错误 ...

https://www.stcaimcu.com/forum.p ... REMOVEUNUSED&page=1
QQ浏览器截图20241025203222.png
别人都只能这样解决
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:47
  • 最近打卡:2025-04-30 20:21:43

9

主题

62

回帖

697

积分

高级会员

积分
697
发表于 2024-10-25 22:49:21 | 显示全部楼层
邮*** 发表于 2024-10-25 20:31
https://www.stcaimcu.com/forum.p ... REMOVEUNUSED&page=1

别人都只能这样解决

谢谢大神  这个问题还真不是个例{:5_281:}  研究了半晚上还是去掉优化来的简单
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:40 , Processed in 0.137152 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表