找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1320|回复: 7
打印 上一主题 下一主题
收起左侧

初学STM32单片机,请求大佬指教

[复制链接]
回帖奖励 5 黑币 回复本帖可获得 5 黑币奖励! 每人限 1 次(中奖概率 50%)
跳转到指定楼层
楼主
ID:511875 发表于 2020-2-25 19:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
流水灯做成了,但我想让他全亮全灭弄不通:
#include "stm32f10x.h"

/**
  * @brief  Ö÷oˉêy
  * @param  ÎT
  * @retval ÎT
  */
        #define LED1_TOGGLE            GPIOA->ODR^=GPIO_Pin_0
#define LED1_OFF                GPIOA->BSRR = GPIO_Pin_0
#define LED1_ON                 GPIOA->BRR = GPIO_Pin_0
#define LED2_TOGGLE             GPIOA->ODR^=GPIO_Pin_1
#define LED2_OFF                GPIOA->BSRR = GPIO_Pin_1
#define LED2_ON                 GPIOA->BRR = GPIO_Pin_1
#define LED3_TOGGLE             GPIOA->ODR^=GPIO_Pin_2
#define LED3_OFF                GPIOA->BSRR = GPIO_Pin_2
#define LED3_ON                 GPIOA->BRR = GPIO_Pin_2
#define LED4_TOGGLE             GPIOA->ODR^=GPIO_Pin_3
#define LED4_OFF                GPIOA->BSRR = GPIO_Pin_3
#define LED4_ON                 GPIOA->BRR = GPIO_Pin_3

//ê1óÿaoˉêy
#define LED5_OFF                GPIO_SetBits(GPIOA,GPIO_Pin_4)
#define LED5_ON                 GPIO_ResetBits(GPIOA,GPIO_Pin_4)
#define LED6_OFF                GPIO_SetBits(GPIOA,GPIO_Pin_5)
#define LED6_ON                 GPIO_ResetBits(GPIOA,GPIO_Pin_5)
#define LED7_OFF                GPIO_SetBits(GPIOA,GPIO_Pin_6)
#define LED7_ON                 GPIO_ResetBits(GPIOA,GPIO_Pin_6)
#define LEDALL_OFF              GPIO_SetBits(GPIOA,GPIO_Pin_All)
#define LEDALL_ON               GPIO_ResetBits(GPIOA,GPIO_Pin_All)


void LED_Cfg(void){
     GPIO_InitTypeDef led_gpio;
           SystemInit();
           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
           led_gpio.GPIO_Pin = GPIO_Pin_All;
        //led_gpio.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3
           //                    | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
           led_gpio.GPIO_Mode = GPIO_Mode_Out_PP;//í¨óøøíÆíìêä3ö
           led_gpio.GPIO_Speed = GPIO_Speed_50MHz;//2MHz
           GPIO_Init(GPIOA,&led_gpio);
           //ÅäÖÃíê3éoó1رÕËùóDLED
           LED1_OFF;
          LED2_OFF;
          LED3_OFF;
          LED4_OFF;
          LED5_OFF;
          LED6_OFF;
          LED7_OFF;
          LEDALL_OFF;
}


void Delay(u32 nCount){
           while(nCount--);
               
}

int main(void)
{
            LED_Cfg();
            while(1){

                               LEDALL_ON;                                Delay(6000000);
                                LEDALL_OFF;
                                Delay(6000000);  烧录这个程序流水灯不亮

          但以下这个就可以亮


                         /*LED1_ON;
          LED2_ON;
          LED3_ON;
          LED4_ON;
          LED5_ON;
          LED6_ON;
          LED7_ON;
             Delay(6000000);
        LED1_OFF;
          LED2_OFF;
          LED3_OFF;
          LED4_OFF;
          LED5_OFF;
          LED6_OFF;
          LED7_OFF;
        Delay(6000000);*/



                                
                                                               
                                
                                                               
                        }

        
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:168996 发表于 2020-2-25 21:00 | 只看该作者
#define LEDALL_OFF              GPIO_SetBits(GPIOA,GPIO_Pin_All)
#define LEDALL_ON               GPIO_ResetBits(GPIOA,GPIO_Pin_All)
如果前面led受控(可高可低),那么证明GPIO_SetBits、GPIO_ResetBits没问题,LEDALL_OFF LEDALL_ON 也应该没问题。
所以我怀疑前面led并非受控,把delay函数优化一下:

void Delay2(u32 nCount){
  u32 tmp=0;
   while(nCount--);
}

试试
回复

使用道具 举报

板凳
ID:592477 发表于 2020-2-25 22:24 | 只看该作者
全亮和全灭不是已经有了吗?
#define LEDALL_OFF              GPIO_SetBits(GPIOA,GPIO_Pin_All)
#define LEDALL_ON               GPIO_ResetBits(GPIOA,GPIO_Pin_All)
第一个是全灭,第二个是全亮
回复

使用道具 举报

地板
ID:698253 发表于 2020-2-25 22:32 | 只看该作者
一共是几个灯,具体怎么接线
回复

使用道具 举报

5#
ID:462827 发表于 2020-2-26 01:34 | 只看该作者
没看到你的GPIO_Pin_All在哪里定义呀
回复

使用道具 举报

6#
ID:511875 发表于 2020-2-26 08:38 | 只看该作者
hantu 发表于 2020-2-26 01:34
没看到你的GPIO_Pin_All在哪里定义呀

GPIO_Pin_All是用的库函数里面的0xFFFF
回复

使用道具 举报

7#
ID:679425 发表于 2020-2-26 09:05 | 只看该作者
#define LEDALL_OFF              GPIO_SetBits(GPIOA,GPIO_Pin_All)
#define LEDALL_ON               GPIO_ResetBits(GPIOA,GPIO_Pin_All)
回复

使用道具 举报

8#
ID:229016 发表于 2020-2-26 09:42 | 只看该作者
我个人觉得仅仅流水灯,用这么宏定义有点麻烦了,直接配置结构体就好了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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