标题:
初学STM32单片机,请求大佬指教
[打印本页]
作者:
guo1231231
时间:
2020-2-25 19:32
标题:
初学STM32单片机,请求大佬指教
流水灯做成了,但我想让他全亮全灭弄不通:
#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);*/
}
}
作者:
banalsheep
时间:
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--);
}
试试
作者:
pql2438547
时间:
2020-2-25 22:24
全亮和全灭不是已经有了吗?
#define LEDALL_OFF GPIO_SetBits(GPIOA,GPIO_Pin_All)
#define LEDALL_ON GPIO_ResetBits(GPIOA,GPIO_Pin_All)
第一个是全灭,第二个是全亮
作者:
o13635133581
时间:
2020-2-25 22:32
一共是几个灯,具体怎么接线
作者:
hantu
时间:
2020-2-26 01:34
没看到你的GPIO_Pin_All在哪里定义呀
作者:
guo1231231
时间:
2020-2-26 08:38
hantu 发表于 2020-2-26 01:34
没看到你的GPIO_Pin_All在哪里定义呀
GPIO_Pin_All是用的库函数里面的0xFFFF
作者:
haierzaifei11
时间:
2020-2-26 09:05
#define LEDALL_OFF GPIO_SetBits(GPIOA,GPIO_Pin_All)
#define LEDALL_ON GPIO_ResetBits(GPIOA,GPIO_Pin_All)
作者:
探路
时间:
2020-2-26 09:42
我个人觉得仅仅流水灯,用这么宏定义有点麻烦了,直接配置结构体就好了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1