TA的每日心情 | 开心 2016-8-4 10:56 |
|---|
签到天数: 242 天 连续签到: 1 天 [LV.8]以坛为家I
翰林
- 积分
- 10503
|
结构体,枚举的概念,库里边的种变量是怎么和单片机对应起来的,用法stm32库的结构是怎么样的.野火哥的” 零死角玩转stm32”详细得不能再详细了.完全可以将野火哥的资料当做是经典的学习教材嘛.因为连运算符什么的都讲的清楚的很.
最简单的流水灯的大体流程就是:初始化时钟,初始化用到的引脚,打开一个引脚,等一会儿,再关闭一个引脚.如此反复.
int main(void)
{
/* LED 端口初始化 */
LED_GPIO_Config();
/* 方法2,使用固件库控制IO */
while (1)
{
LED1( ON ); // 亮
Delay(0x0FFFFF);
LED1( OFF ); // 灭
LED2( ON ); // 亮
Delay(0x0FFFFF);
LED2( OFF ); // 灭
LED3( ON ); // 亮
Delay(0x0FFFFF);
LED3( OFF ); // 灭
}
}
void LED_GPIO_Config(void)
{
/*定义一个GPIO_InitTypeDef类型的结构体*/
GPIO_InitTypeDef GPIO_InitStructure;
/*开启GPIOB和GPIOF的外设时钟*/
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);
/*选择要控制的GPIOB引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
/*设置引脚模式为通用推挽输出*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/*设置引脚速率为50MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/*调用库函数,初始化GPIOB0*/
GPIO_Init(GPIOB, &GPIO_InitStructure);
/*选择要控制的GPIOF引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
/*调用库函数,初始化GPIOF7*/
GPIO_Init(GPIOF, &GPIO_InitStructure);
/*选择要控制的GPIOF引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
/*调用库函数,初始化GPIOF7*/
GPIO_Init(GPIOF, &GPIO_InitStructure);
/* 关闭所有led灯 */
GPIO_SetBits(GPIOB, GPIO_Pin_0);
/* 关闭所有led灯 */
GPIO_SetBits(GPIOF, GPIO_Pin_7|GPIO_Pin_8);
}
火哥的代码注释已经详细的不能再详细了.大家还不购入一块尝尝鲜?
代码简单是简单,可总有要看的
GPIO_InitStructure.GPIO_Mode:有好几个值吧,你的一个一个的看看是什么意思吧.
PIO_InitStructure.GPIO_Speed:有好几个值吧,你的看一下大体有个印象吧.
GPIO_InitStructure.GPIO_Pin:有七个值,的看看人家是怎么定义.以后自己也好照样弄是吧.
GPIO_Init(GPIOF, &GPIO_InitStructure);这个函数的参数是个地址,参数为地址时,调用方和被调用方各自是怎样用的呢
....................
看啊看,一点一点的看...............
|
|