楼主: NXP管管

【一起来找bug】不会找BUG的程序员不是好厨子

[复制链接]
回帖奖励 160 NXP金币 回复本帖可获得 5 NXP金币奖励! 每人限 1 次(中奖概率 90%)
  • TA的每日心情
    开心
    2024-3-12 16:11
  • 签到天数: 818 天

    [LV.10]以坛为家III

    3

    主题

    860

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2751
    最后登录
    2024-3-19
    发表于 2021-1-27 17:54:51 | 显示全部楼层
    温度参考电压源输出与实际不符
    理论输出 3.0V,实际输出2.8V左右。原因是原理图上将参考电压源 IC 的输入和输出接反了。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-12 16:11
  • 签到天数: 818 天

    [LV.10]以坛为家III

    3

    主题

    860

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2751
    最后登录
    2024-3-19
    发表于 2021-1-27 17:55:46 | 显示全部楼层
    测温度,输入与输出不符
    输入 2.99V, 输出 2.7xV。运放供电电压为3.3V,应该为5.0V。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-12 16:11
  • 签到天数: 818 天

    [LV.10]以坛为家III

    3

    主题

    860

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2751
    最后登录
    2024-3-19
    发表于 2021-1-27 17:57:34 | 显示全部楼层
    突然无法下载程序,出现如下错误
    Executing flash operation 'Program' (Program file into flash: DCCMS_LPC546XX.axf) - Fri Nov 15 17:58:54 CST 2019 Checking MCU info... Scanning for targets... Executing flash action... MCUXpresso IDE RedlinkMulti Driver v11.0 (May 22 2019 13:46:40 - crt_emu_cm_redlink.exe build 6) ( 0) Reading remote configuration Wc(03). No cache support. Found chip XML file in D:/temp/mcuxpresso/DCCMS_LPC546XX/Debug\LPC54608J512.xml ( 5) Remote configuration complete Reconnected to existing LinkServer process. Using memory from core 0 after searching for a good core ( 30) Emulator Connected

    Cannot halt processor Request debug reset of DAP Cannot halt processor Request debug reset of DAP ( 40) No Halt ( 50) CPU ID debug interface type = Cortex-M3/4 (DAP DP ID 2BA01477) over SWD TAP 0 processor type = Cortex-M4 (CPU ID 00000C24) on DAP AP 0 number of h/w breakpoints = 6 number of flash patches = 2 number of h/w watchpoints = 4 Probe(0): Connected&Reset. DpID: 2BA01477. CpuID: 00000C24. Info: Debug protocol: SWD. RTCK: Disabled. Vector catch: Disabled. Content of CoreSight Debug ROM(s): RBASE E00FF000: CID B105100D PID 04000BB4C4 ROM (type 0x1) ROM 1 E000E000: CID B105E00D PID 04000BB00C Gen SCS (type 0x0) ROM 1 E0001000: CID B105E00D PID 04003BB002 Gen DWT (type 0x0) ROM 1 E0002000: CID B105E00D PID 04002BB003 Gen FPB (type 0x0) ROM 1 E0000000: CID B105E00D PID 04003BB001 Gen ITM (type 0x0) ROM 1 E0040000: CID B105900D PID 04000BB9A1 CSt TPIU type 0x11 Trace Sink - TPIU ROM 1 E0041000: CID B105900D PID 04000BB925 CSt ETM type 0x13 Trace Source - Core Cannot halt processor Failed on chip setup: Ep(04). Cannot halt processor. ( 65) Chip Setup Complete
    初始化部分的操作用局部变量 master_rtos_handle , 读取温湿度用全局变量 hdc2010_master_rtos_handle ,导致 I2C 的状态不一致,一直 busy。

    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-12 16:11
  • 签到天数: 818 天

    [LV.10]以坛为家III

    3

    主题

    860

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2751
    最后登录
    2024-3-19
    发表于 2021-1-27 17:58:39 | 显示全部楼层
    GPIO 的初始化
    只需要调用GPIO_PortInit一次即可。如果重复调用,会将调用之前的设置恢复到默认值。

    INPUTMUX 的初始化
    只需要调用INPUTMUX_Init一次即可。如果重复调用,会将调用之前的设置恢复到默认值。

    PINT 的初始化
    只需要调用PINT_Init一次即可。如果重复调用,会将调用之前的设置恢复到默认值。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2024-2-5 12:06
  • 签到天数: 627 天

    [LV.9]以坛为家II

    94

    主题

    1628

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4429

    热心会员

    最后登录
    2024-2-5
    发表于 2021-1-27 18:01:13 来自手机 | 显示全部楼层

    回帖奖励 +5 NXP金币

    说起MCUXPRESSO 的BUG 都是泪啊。之前配置lpc55s69的utick,用非中断模式做定时,然后发现里面的计数值一直不刷新,压根没反应。后来反映给他们的工程师,那边说有个啥数值没刷下去,后来就没后来了。然后用845,本来我对他的DAC寄予厚望,但发现用dma,然后波形就有个明显的等待延时,也不知道咋整,然后也放弃了,就有普通模式了。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    97

    主题

    836

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    3967
    最后登录
    2024-4-16
    发表于 2021-1-27 18:12:52 | 显示全部楼层

    回帖奖励 +5 NXP金币

    我们LPC800有SWM (Switch matrix)的功能,老板再也不怕我TX RX画反了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    91

    主题

    2926

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7799
    最后登录
    2024-4-18
    发表于 2021-1-27 18:56:38 | 显示全部楼层

    回帖奖励 +5 NXP金币

    本帖最后由 jundao721 于 2021-1-29 11:35 编辑

    以前用LPC54114做项目的时候,有些初始化代码的顺序本来想想不那么重要,运行结果却不一样,有时候想可能是引脚有时候会受到影响。这算小bug吧。1.一般就是JTAG焊错线导致无法下载;2.芯片没接Vref,AD不准;3.做好QFN封装的板子,芯片回来手工焊不上等等吧可以总结好几页。想了想,以前的坑,再加几条,3.QNF芯片无法手工焊接,是画PCB板的时候引脚短了,机器能手不能了。4.有一次画2000V的接口,使用的是2.0的端子,你会发现上电后端口打火,这就是高压和地线离得太近的缘故。5.使用VP230和VP233的时候注意5脚,很容易忘记。6.一定要多写注释,过很久以后你不一定还记得为啥子这么写。7.有些比较器输出是需要接上拉电阻的。会忽视,后果不算严重。8.买工具,买器件尽量买好的,某宝上有些真的很坑。9.控制步进电机的驱动芯片有些是需要设置输出电流的,设置的太高,就会很热很热。10.文件保存一定要写read me. 等等吧。
    加油哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-12-28 18:15
  • 签到天数: 26 天

    [LV.4]偶尔看看III

    2

    主题

    2270

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2654
    最后登录
    2024-4-1
    发表于 2021-1-27 20:08:50 来自手机 | 显示全部楼层

    回帖奖励 +5 NXP金币

    我tm打板子回来焊完直接冒烟……一测是vcc和gnd短路……还有一款vcc网络直接差2毫米没到位…… drc都没报错……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7090
    最后登录
    2023-4-20
    发表于 2021-1-28 10:29:31 | 显示全部楼层

    回帖奖励 +5 NXP金币

    本帖最后由 jinglixixi 于 2021-1-28 10:45 编辑

    “BUG可能就摆在你面前”
    前段时间,有个朋友在做PWM调节LED灯的测试,本来开发板是配有例程的,编译下载后即可看到效果。
    无奈这哥们儿好奇心突发说,你不是显示屏功能移植的高手吗,来把这个PWM调节的输出引脚移到其他的引脚上,我对他讲:显示屏的移植也是有条件的,移植之所以成功是因为我能以I/O口来模拟各种接口通讯获得的。你要把PWM换到其它引脚来输出,这只能在它允许的输出通道上来实现。
    后来他查了下资料说,用TIM1计时器控制PWM输出有3个通道,你把它换到其它2个通道吧,我只能去试一试。
    它的主程序十分简单,内容如下:
    1. int main(void)
    2. {
    3. USART_Printf_Init(115200);
    4. printf("SystemClk:%d\r\n",SystemCoreClock);
    5. TIM1_PWMOut_Init( 899, 0, 500 );
    6. while(1);
    7. }
    复制代码
    在主程序是无从下手了,只能去看所调用的函数,其内容如下:
    1. void TIM1_PWMOut_Init( u16 arr, u16 psc, u16 ccp )
    2. {
    3.         GPIO_InitTypeDef GPIO_InitStructure;
    4.         TIM_OCInitTypeDef TIM_OCInitStructure;
    5.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    6. RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1, ENABLE );
    7. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    8.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    9.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    10.         GPIO_Init( GPIOA, &GPIO_InitStructure );
    11. TIM_TimeBaseInitStructure.TIM_Period = arr;
    12.         TIM_TimeBaseInitStructure.TIM_Prescaler = psc;
    13.         TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    14.         TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    15.         TIM_TimeBaseInit( TIM1, &TIM_TimeBaseInitStructure);
    16. #if (PWM_MODE == PWM_MODE1)
    17.     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    18. #elif (PWM_MODE == PWM_MODE2)
    19.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
    20. #endif
    21. TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    22.         TIM_OCInitStructure.TIM_Pulse = ccp;
    23.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    24. TIM_OC1Init( TIM1, &TIM_OCInitStructure );
    25. TIM_CtrlPWMOutputs(TIM1, ENABLE );
    26. TIM_OC1PreloadConfig( TIM1, TIM_OCPreload_Disable );
    27. TIM_ARRPreloadConfig( TIM1, ENABLE );
    28.         TIM_Cmd( TIM1, ENABLE );
    29. }
    复制代码
    由程序可以看出,它是以CH1的PA8来输出PWM调节的,要换到CH2或CH3,也就是换到PA9或PA10。
    这是好改的,将GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;改:
    GPIO_InitStructure.GPIO_Pin= GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Pin= GPIO_Pin_10;
    即可。

    但是,这只说明你让PA9或PA10使能为了I/O口,至于TIM1是否往那送,就是另一个问题了。你需要让TIM1工作在CH2或CH3上才行。
    看遍了整个函数也没见到关于CH1的影子,也就无从轻易地改为CH2或CH3这么容易。
    再仔细读程序就有些端倪,看看TIM_OC1Init(TIM1, &TIM_OCInitStructure );中有1的影子,把它改了,换成2。
    在往下看还有个带1的,把它也该了,换成:TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Disable );
    这回应该没问题了吧?
    将程序编译下载后,让人傻眼了,LED灯毫无变化,你猜为什么?

    哈哈,答案会放在下一期“通往解bug的路上”给出。




    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    6

    帖子

    0

    注册会员

    Rank: 2

    积分
    161
    最后登录
    2021-9-14
    发表于 2021-1-28 11:32:54 | 显示全部楼层

    回帖奖励 +5 NXP金币

    昨天就遇到一个,使用WS2812,利用单片机开发板供电,由于供电电流不够,导致颜色不对并且狂闪,恰巧程序中有颜色切换的功能,以为自己写出了BUG呢。
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-20 18:28 , Processed in 0.139041 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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