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

[复制链接]
 楼主| 一路向北lm 发表于 2017-7-22 22:22 | 显示全部楼层 |阅读模式
大家晚上好,我们接着开始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
2.png
3.png
4.png
5.png
6.png
7.png
8.png
9.png
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灯呈现不灭状态么
 楼主| 一路向北lm 发表于 2017-7-23 19:44 | 显示全部楼层
yagj 发表于 2017-7-23 14:43
有两个问题,你这里是只写了一部分吧,引脚那里,然后在void led_on(void)函数里面,只看到了拉低电频,难 ...

这个地方没写清楚,主要是没在初始化的时候讲led拉高,让灯保持熄灭,然后在主函数里打开led,主要是有点急,想快点写后面的高级篇,不好意思了。
 楼主| 一路向北lm 发表于 2017-7-23 19:45 | 显示全部楼层
yagj 发表于 2017-7-23 14:44
问题没分开,不还意思
有两个问题
1.你这里是只写了一部分吧,引脚那里

好的,感谢指出错误,下次要写清楚点
gaoke231 发表于 2017-7-23 19:56 | 显示全部楼层
刚学完51单片机,新建工程还有点模糊,主要是32太强大,和51不是一个级别,一个led就这么麻烦,看来得下功夫了,楼主求带。
yagj 发表于 2017-7-24 01:01 | 显示全部楼层
一路向北lm 发表于 2017-7-23 19:45
好的,感谢指出错误,下次要写清楚点

我是初学者,学了一点点,所以看的不是很明白
junpeng324 发表于 2017-7-24 09:48 | 显示全部楼层
yagj 发表于 2017-7-24 01:01
我是初学者,学了一点点,所以看的不是很明白

我也是刚学习stm32,感觉楼主写的还是挺不错的,好多有关寄存器的都没有列举出来,可能考虑初学者吧,反正我是看懂了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

293

主题

3837

帖子

81

粉丝
快速回复 在线客服 返回列表 返回顶部