学习STM32才刚刚几天时间,我发现她的库文件中用到结构体的地方很多,而且很有技巧。记得我第一次接触结构体是把浮点数存入EEPROM中时,在网上看到了这种结构,当时只是有一个了解,只知道怎么用,在M3的库中,我深刻的体会到了他的强大。 不过这么强大的库也给我很不舒服的感觉,总有一种“我就是这么规定的,你必须这么认为”的强迫感,可能是不习惯吧,所以我要加大代码量,从最基础的学起。 昨天网上写了好多呢,结果无线网卡连接不上,存U盘了,结果U盘出意外了,嗨,就这些吧,上代码,虽然很基础,但是我也不能放过。 我用的是小苗LED流水灯的模板,然后自己有所改动。 LED.H中照了野火的例程 #define ON 0 #define OFF 1 //带参宏,可以像内联函数一样使用 #define LED1(a) if (a) \ GPIO_SetBits(GPIOC,GPIO_Pin_0);\ else \ GPIO_ResetBits(GPIOC,GPIO_Pin_0) 这里只是一个例子,我想请问下没有定义a,怎么没有报错呢。 main.c自己写了下流水灯的过程,能比较方便的更改流水灯的组合样式 while(1) { u8 i; for(i=0;i<8;i++) { switch(i)//更改LED的状态和i的数量可以组合出任意变化的流水灯 { case 0:{LED1(OFF);LED2(OFF);LED3(OFF);LED4(OFF);}break; case 1:{LED1(ON );LED2(OFF);LED3(OFF);LED4(OFF);}break; case 2:{LED1(ON );LED2(ON );LED3(OFF);LED4(OFF);}break; case 3:{LED1(ON );LED2(ON );LED3(ON );LED4(OFF);}break; case 4:{LED1(ON );LED2(ON );LED3(ON );LED4(ON );}break; case 5:{LED1(OFF);LED2(ON );LED3(ON );LED4(ON );}break; case 6:{LED1(OFF);LED2(OFF);LED3(ON );LED4(ON );}break; case 7:{LED1(OFF);LED2(OFF);LED3(OFF);LED4(ON );}break; } Delay();//流水灯亮、灭的时间间隔 } } 延时我没有改,大家可以自己写成带有参数的,就可以随意的更改闪烁频率了 |
1_LED_Exercise.rar
下载1.48 KB, 下载次数: 2, 下载积分: ST金币 -1
不试试hal调用吗?