打印
[STM32F1]

一起学stm32—————基础篇4(点亮led)

[复制链接]
1172|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大家晚上好,我们接着开始stm32的学习,这次我们来点亮一个led真正的实践篇。
1.在新建的工程上我们新建两个文件分别是led.c与led.h ,并将文件保存app文件下。见图12.将led.c添加到工程文件下app中,同时将app里面的头文件都添加进去。见图2 图3。
3.参考原理图可知,8个led接在PC0~PC7 ,通过原理图可以知道如果要点亮led只需要给对应端口低电平。见原理图4图5。
4..在led.c文件内我们分别对led进行初始化操作,然后写了一个点亮led的函数代码如图6。
5.在图6代码中我们能看到
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                     //选择管脚  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //设置模式
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //设置速率
  管脚可以从PC0~PC15  有16的对应管脚可以选择。其它GIOP组也是类似。
  模式可以分为输入和输出,输入模式下分为:1.GPIO_Mode_IN_FLOATING  输入浮空
                                                              2.GPIO_Mode_IPU 输入上拉
                                                              3.GPIO_Mode_IPD 输入下拉
                                                              4.GPIO_Mode_AIN模拟输入
                                     输出模式下分为 :5.GPIO_Mode_Out_OD 开漏输出
                                                              6.GPIO_Mode_Out_PP推挽输出
                                                              7.GPIO_Mode_AF_PP推挽式复用功能
                                                              8.GPIO_Mode_AF_OD开漏复用功能
  速度的选择:GPIO_Speed_10MHz 最高输出速率 10MHz
                    GPIO_Speed_2MHz 最高输出速率 2MHz
                    GPIO_Speed_50MHz 最高输出速率 50MHz
6.在led初始化函数下面接着写了一个点亮led的函数,该函数试将对应的GPIO拉低从而使led点亮。如图7。
7.在led.h中我们可以这样声名函数,详见图8。
8.接着可以在主函数中调用led点亮的函数,先在主函数中对led初始化,然后在while(1)中让led_on一直循环点亮即可。见图9。
9.下载到开发板可看到led灯被点亮,我们主要是通过stm32固件手册来编写程序打开stm32固件手册可看到如图10。
好了,本次的小例子就到这里了,下次我们学习蜂鸣器。Ok大家晚安!











1.png (48.09 KB )

1.png

2.png (48.35 KB )

2.png

3.png (55.5 KB )

3.png

4.png (75.18 KB )

4.png

5.png (67.11 KB )

5.png

6.png (212.56 KB )

6.png

7.png (45.84 KB )

7.png

8.png (62.94 KB )

8.png

9.png (65.88 KB )

9.png

10.png (167.95 KB )

10.png
沙发
chenqiang10| | 2017-7-22 22:29 | 只看该作者
贴子很详细,led的点亮也不是很难,期待后续更新。

使用特权

评论回复
板凳
yagj| | 2017-7-23 14:43 | 只看该作者
有两个问题,你这里是只写了一部分吧,引脚那里,然后在void led_on(void)函数里面,只看到了拉低电频,难道不同抬高么,这样的话,不是呈现拉低状态,LED灯呈现不灭状态么

使用特权

评论回复
地板
yagj| | 2017-7-23 14:44 | 只看该作者
yagj 发表于 2017-7-23 14:43
有两个问题,你这里是只写了一部分吧,引脚那里,然后在void led_on(void)函数里面,只看到了拉低电频,难 ...

问题没分开,不还意思
有两个问题
1.你这里是只写了一部分吧,引脚那里
2.然后在void led_on(void)函数里面,只看到了拉低电频,难道不同抬高么,这样的话,不是呈现拉低状态,LED灯呈现不灭状态么

使用特权

评论回复
5
一路向北lm|  楼主 | 2017-7-23 19:44 | 只看该作者
yagj 发表于 2017-7-23 14:43
有两个问题,你这里是只写了一部分吧,引脚那里,然后在void led_on(void)函数里面,只看到了拉低电频,难 ...

这个地方没写清楚,主要是没在初始化的时候讲led拉高,让灯保持熄灭,然后在主函数里打开led,主要是有点急,想快点写后面的高级篇,不好意思了。

使用特权

评论回复
6
一路向北lm|  楼主 | 2017-7-23 19:45 | 只看该作者
yagj 发表于 2017-7-23 14:44
问题没分开,不还意思
有两个问题
1.你这里是只写了一部分吧,引脚那里

好的,感谢指出错误,下次要写清楚点

使用特权

评论回复
7
gaoke231| | 2017-7-23 19:56 | 只看该作者
刚学完51单片机,新建工程还有点模糊,主要是32太强大,和51不是一个级别,一个led就这么麻烦,看来得下功夫了,楼主求带。

使用特权

评论回复
8
yagj| | 2017-7-24 01:01 | 只看该作者
一路向北lm 发表于 2017-7-23 19:45
好的,感谢指出错误,下次要写清楚点

我是初学者,学了一点点,所以看的不是很明白

使用特权

评论回复
9
junpeng324| | 2017-7-24 09:48 | 只看该作者
yagj 发表于 2017-7-24 01:01
我是初学者,学了一点点,所以看的不是很明白

我也是刚学习stm32,感觉楼主写的还是挺不错的,好多有关寄存器的都没有列举出来,可能考虑初学者吧,反正我是看懂了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

277

主题

3815

帖子

76

粉丝