【敏矽微ME32F103 Demokit】+数码显示管、LED灯等例程测试

尘封5年的keil软件和烧录工具,随着心心念念的 demo板到来正式启封,犹记得19年从嵌入式硬件工程师岗位,进军大厂当螺钉需要进行细分职业,向左选硬还是向右选软?硬件饭碗终身?软件吃青春饭?在各种各样的建议下,最终选择了苦逼的硬件,一晃5年过去了,当年一起战斗过且选择软件的同事你们还好吗?哎呀!跑题了,5年没做了,请允许我以一个小白身份从头越!

调试环境搭建:

我使用的是keil5+JLINK下载方法,首先遇到的是第一个问题,JLINK如何跟板子连接,可以参考:

215641wz9z7svpac9494cg

紧接着安装pack包:

215641azsxbvso2en6d26d

然后选择相应的例程project文件,点击下载时发现报错,主要是这两个地方未配置成功:

215641yei2wesi449re9q8

215642oxz6qxbp3raugxxa

最终搞定,如下图所示负载环境

215642kgykhikffivgkv97

LED灯代码调试:

例程代码比简单主要是做呼吸灯使用,使用到了GPIO的高低输出模式,另外采用计时不太准的delay函数;

                if (GPIO_GetPinState(PC, IO_BIT_PIN13))

                        GPIO_ResetPins(PC, IO_BIT_PIN13);

                else

                        GPIO_SetPins(PC, IO_BIT_PIN13);

                SYS_Delay(0xfffff);

而我将其简单的修改为多种频率闪烁方式:

        GPIO_ResetPins(PD, IO_BIT_PIN2);

        GPIO_SetPins(PA, IO_BIT_PIN4);       

                        GPIO_ResetPins(PA, IO_BIT_PIN4);

        GPIO_SetPins(PD, IO_BIT_PIN2);       

        if(a<=10)

        {

                a++;

                if (GPIO_GetPinState(PC, IO_BIT_PIN4))

                        GPIO_ResetPins(PC, IO_BIT_PIN4);

                else

                        GPIO_SetPins(PC, IO_BIT_PIN4);       

                SYS_Delay(0xfffff);

        }

        else if(a<=20)

        {

                a++;

                        if (GPIO_GetPinState(PC, IO_BIT_PIN4))

                        GPIO_ResetPins(PC, IO_BIT_PIN4);

                else

                        GPIO_SetPins(PC, IO_BIT_PIN4);

                SYS_Delay(0xfffff);

                SYS_Delay(0xfffff);       

                SYS_Delay(0xfffff);                       

        }

        else if(a<=30)

        {

                        a++;

                        if (GPIO_GetPinState(PC, IO_BIT_PIN4))

                        GPIO_ResetPins(PC, IO_BIT_PIN4);

                else

                        GPIO_SetPins(PC, IO_BIT_PIN4);

                SYS_Delay(0xfffff);

                SYS_Delay(0xfffff);       

                SYS_Delay(0xfffff);

                SYS_Delay(0xfffff);

                SYS_Delay(0xfffff);

        }

                else if(a<=40)

        {

                        a++;

                        if (GPIO_GetPinState(PC, IO_BIT_PIN4))

                        GPIO_ResetPins(PC, IO_BIT_PIN4);

                else

                        GPIO_SetPins(PC, IO_BIT_PIN4);

                SYS_Delay(0xfffff);

                SYS_Delay(0xfffff);       

                SYS_Delay(0xfffff);

        }

                        else if(a<=50)

        {

                        a++;

                        if (GPIO_GetPinState(PC, IO_BIT_PIN4))

                        GPIO_ResetPins(PC, IO_BIT_PIN4);

                else

                        GPIO_SetPins(PC, IO_BIT_PIN4);

                SYS_Delay(0xfffff);

        }

                                else if(a<=60)

        {

                        a++;

                        if (GPIO_GetPinState(PC, IO_BIT_PIN4))

                        GPIO_ResetPins(PC, IO_BIT_PIN4);

                else

                        GPIO_SetPins(PC, IO_BIT_PIN4);

                SYS_Delay(0xfff);

        }

        else

        {

        a=1;       

        }

LED灯测试效果图如下:

215642mxgxbgprg4om53ne

数码管代码调试:

出于硬件职业的敏感性:首先对4位的数码管内部原理图产生了兴趣,于是按型号索骥

215643u77t98etl7789z0a

215643ypngg0gggmvepg7k

数码管原理

于是下载demo板的代码,同时屏蔽函数验证自己的猜想

215643ty9p66pleaulem97

215644cj5uhylj1ylulvqq

而我写了个按键计数器,虽然有点bug,目前在努力调试中:

                                if (GPIO_GetPinState(PA, IO_BIT_PIN0))

                                {

                                if(keypasstemp>=0xfff)

                                {

                                keypasstemp=0;

                                Ledtemp++;       

                                }

                                else

                                {

                                keypasstemp=0;

                                }


                                }

                else

                {

                SYS_Delay(0x3fff);

                        keypasstemp++;

                        if(keypasstemp>=0xfffffff)

                        {

                                keypasstemp=0xffffff;       

                        }

                }

                if(Ledtemp<0x0a)

                {

                                LED_Fill(COM3,led[Ledtemp],graytemp);

                                LED_Fill(COM2,led[0],graytemp);

                                LED_Fill(COM1,led[0],graytemp);

                                LED_Fill(COM0,led[0],graytemp);               

                }

                else if(Ledtemp<0x14)

                {

                                LED_Fill(COM3,led[Ledtemp%0x0a],graytemp);

                                LED_Fill(COM2,led[Ledtemp/0x0a],graytemp);

                                LED_Fill(COM1,led[1],graytemp);

                                LED_Fill(COM0,led[1],graytemp);       

                }

                else if(Ledtemp <0x64)

                {

                                LED_Fill(COM3,led[Ledtemp%0x0a],graytemp);

                                LED_Fill(COM2,led[(Ledtemp%0x64)/0x0a],graytemp);

                                LED_Fill(COM1,led[Ledtemp/0x64],graytemp);

                                LED_Fill(COM0,led[1],graytemp);               

                }

                else if(Ledtemp <0x3E8)

                {

                                LED_Fill(COM3,led[Ledtemp%0x0a],graytemp);

                                LED_Fill(COM2,led[(Ledtemp%0x64)/0x0a],graytemp);

                                LED_Fill(COM1,led[(Ledtemp%0x3E8)/0x64],graytemp);

                                LED_Fill(COM0,led[Ledtemp/0x3E8],graytemp);                       


                }

                else

                {

                Ledtemp=0;

                }

215644p3beddb6jm3hlh3w

最后,衷心感谢面包板平台和厂商的支持,让我重新开启自己的职业第二生涯,谢谢!