你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32 gpio直接驱动数码管做动态扫描没有反应

[复制链接]
浅芷仁 提问时间:2022-7-8 09:14 / 未解决
#include"main.h"

const uint32_t SEG_SegPins[]=
{

        GPIO_PIN_0,GPIO_PIN_1,GPIO_PIN_2,GPIO_PIN_3,GPIO_PIN_4,GPIO_PIN_5,GPIO_PIN_6,GPIO_PIN_7,
};

const uint32_t SEG_DigPins[]=
{

        GPIO_PIN_8,GPIO_PIN_9,GPIO_PIN_10,GPIO_PIN_11,
};


void Seg_Init(void);
void Seg_DisplaySingleDigit(uint8_t n);
void Seg_DynamicScan(uint8_t n1,uint8_t n2,uint8_t n3,uint8_t n4);

int main(void)
{
uint32_t tsStart;
uint32_t counter=0;
uint8_t n1,n2,n3,n4;

HAL_Init();

Seg_Init();


while(1)
{
         tsStart=HAL_GetTick();

         n1=(counter/1000)%10;
         n2=(counter/100)%10;
         n3=(counter/10)%10;
         n4=counter%10;


         while(HAL_GetTick()-tsStart >=1000)
         {
                 Seg_DynamicScan(n1,n2,n3,n4);
         }
    counter++;
}

}


void Seg_Init(void)
{
        GPIO_InitTypeDef gpioinit;
        uint32_t i;

    //1.初始化数码管的段选引脚
        gpioinit.Mode=GPIO_MODE_OUTPUT_PP;
        gpioinit.Speed=GPIO_SPEED_FREQ_LOW;

        __HAL_RCC_GPIOA_CLK_ENABLE();

        for(i=0;i<8;i++)
        {
                gpioinit.Pin=SEG_SegPins[i];
        HAL_GPIO_WritePin(GPIOA,SEG_SegPins[i],GPIO_PIN_RESET);
        HAL_GPIO_Init(GPIOA,&gpioinit);
        }


         //2.初始化数码管的位选引脚
                gpioinit.Mode=GPIO_MODE_OUTPUT_PP;
                gpioinit.Speed=GPIO_SPEED_FREQ_LOW;

                __HAL_RCC_GPIOA_CLK_ENABLE();

                for(i=0;i<4;i++)
                {
                        gpioinit.Pin=SEG_DigPins[i];
                HAL_GPIO_WritePin(GPIOA,SEG_DigPins[i],GPIO_PIN_SET);
                HAL_GPIO_Init(GPIOA,&gpioinit);
                }

}

void Seg_DisplaySingleDigit(uint8_t n)
{

        const uint8_t font[]=
        {
                        0x3f,0x06,0x5B,0x4F,0x66,0x6D,0X7D,0X07,0X7F,0X6F
        };
     uint32_t i;
     for(i=0;i<8;i++)
     {
       if((font[n] & (0x1 << i))!=0)
       {

               HAL_GPIO_WritePin(GPIOA,SEG_SegPins [i],GPIO_PIN_SET);

       }
       else
       {
               HAL_GPIO_WritePin(GPIOA,SEG_SegPins [i],GPIO_PIN_RESET);
       }

     }
}


void Seg_DynamicScan(uint8_t n1,uint8_t n2,uint8_t n3,uint8_t n4)
{
     uint32_t i, j;
     uint8_t numbers[4];

     numbers[0]=n1;
     numbers[1]=n2;
     numbers[2]=n3;
     numbers[3]=n4;

     for(i=0;i<4;i++)
     {
      for(j=0;j<4;j++)
      {
             HAL_GPIO_WritePin(GPIOA,SEG_DigPins[j],GPIO_PIN_SET);
      }
      Seg_DisplaySingleDigit(numbers[i]);
      HAL_GPIO_WritePin(GPIOA,SEG_DigPins[i],GPIO_PIN_RESET);
      HAL_Delay(10);

     }


}


收藏 评论9 发布时间:2022-7-8 09:14

举报

9个回答
myxiexing 回答时间:2022-7-8 11:53:29
没有电路图/没有数码管的资料也不好分析的。需要区分共阴还是共阳,供电电压/电流是否符合?  建议先单独点亮某一划来确认下问题所在。
butterflyspring 回答时间:2022-7-8 12:03:20
也可以挂着示波器单独调试一下,看看问题出在哪里
butterflyspring 回答时间:2022-7-8 13:56:38
也可以挂着示波器单独调试一下,看看问题出在哪里
浅芷仁 回答时间:2022-7-8 21:52:43
myxiexing 发表于 2022-7-8 11:53
没有电路图/没有数码管的资料也不好分析的。需要区分共阴还是共阳,供电电压/电流是否符合?  建议先单独点 ...

共阴的,所有的比划都点亮了是正常的,A0-A7接的8个段选引脚。A8-A11接的4个位选引脚。
浅芷仁 回答时间:2022-7-8 21:53:34
butterflyspring 发表于 2022-7-8 13:56
也可以挂着示波器单独调试一下,看看问题出在哪里

所有的比划都点亮了是正常的,A0-A7接的8个段选引脚。A8-A11接的4个位选引脚。共阴的。
myxiexing 回答时间:2022-7-9 00:04:29
浅芷仁 发表于 2022-7-8 21:52
共阴的,所有的比划都点亮了是正常的,A0-A7接的8个段选引脚。A8-A11接的4个位选引脚。
...

延时那部分检查下。
浅芷仁 回答时间:2022-7-9 10:08:24
myxiexing 发表于 2022-7-9 00:04
延时那部分检查下。

能帮检查指导下吗?我检查了好几遍没有发现问题
yklstudent 回答时间:2022-7-9 19:24:11
while(1)
{
         tsStart=HAL_GetTick();

         n1=(counter/1000)%10;
         n2=(counter/100)%10;
         n3=(counter/10)%10;
         n4=counter%10;


         while(HAL_GetTick()-tsStart >=1000)
         {
                 Seg_DynamicScan(n1,n2,n3,n4);
         }

    counter++;
}
红色部分能执行??????
浅芷仁 回答时间:2022-7-9 20:34:24
yklstudent 发表于 2022-7-9 19:24
while(1)
{
         tsStart=HAL_GetTick();

先获取滴答定时器当前的时间是多少多少毫秒减去一刚开头记时的时间,如果这两个时间的差值大于1000的话。也就表示我刚开始计时到本次的时候,时间已经过去了1s。然后等完一秒后,我的counter自动加1。while循环里面就是用来做的刷新。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版