我们用c语言来再学习stm32,以加深理解,并且应用相关资料和官方固件标准库。因此,我们来编写一个跑马灯实验
先前准备
一, 开发环境
安装mdk5,并且导入stm32官方标准库。
stm32官方标准库名称:stm32f4_dsp_stdperiph_lib
这个stm32官方固件标准库以前是可以在st官网下载,现在好像在官网上找不到了。
二,相关应用资料:stm32f4xx中文参考手册
相关函数
一,因为要使用gpio,在使用gpio时需要先使能io口时钟。
使能io时钟就要使用到rcc寄存器。rcc寄存器相关知识,见中文参考手册6.3章节。
调用函数:rcc_ahb1periphclockcmd();
二,因为要用到gpio配置,所以要用到gpio库函数。
1, gpio库文件
头文件:stm32f4xx_gpio.h
源文件:stm32f4xx_gpio.c
2, 重要的gpio库函数
(1)gpio初始化函数
void gpio_init(gpio_typedef* gpiox, gpio_inittypedef* gpio_initstruct);
(2)设置电平输出函数
输出高电平:
void gpio_setbits(gpio_typedef* gpiox, uint16_t gpio_pin);
输出低电平:
void gpio_resetbits(gpio_typedef* gpiox, uint16_t gpio_pin);
程序编写
一,程序的实现:
使开发板上的led1,led2,led3,led4循环点亮,实现流水灯效果。
硬件电路图:
二,编写led子程序
1, led.h头文件
2, led.c源文件
3, 在led.c中如何使能gpio时钟
(1)在库文件rcc.hk中找到”rcc_ahb1periphclockcmd(); “并将其复制粘贴下来
(2)点击函数再右键go to definition………,查找入口参数
(3)查找第一个入口参数
注:assert_param的作用就是用来判断传递给函数的参数是否是有效;
找到c组gpio,将其复制粘贴到括号里
完成第一入口参数:
如果还有使能别的io口,就用或符号”|”,后面添加
(4)查找到二个入口参数:
要使能的话就选择enable将其复制粘贴下来
完成第二个入口参数,完成gpio的时钟使能函数的调用:
4, 在led.c中如何配置gpio函数:如,配置d组io口
(1)输入函数gpio_init(); ,用上面的方法来配置第一个入口函数,完成第一个入口函数如下:
(2)第二个入口参数,是个结构体
先将它复制粘贴下来,去掉*号,进行定义这个结构体:
完成第二个入口参数:
(3)用结构体来完成gpio的配置
gpio_initstructure加点来进行各类型的寄存器配置:
配置gpio_mode寄存器,点击gpio_mode,右键go to definition………查询如下:
再点击gpiomode_typedef,查询如下:
选择合适的类型,将其复制粘贴下来,完成gpio_mode的配置:
完成gpio的配置:
三, 编写main函数
中国碲化镉太阳能电池成都造(打破外国人垄断)
工信部科技司:以人工智能结合制造业智能化发展
锤子科技今年确认要发新机了,只不过要等的时间有点久
功率模块和功率IC如何区分
如何优化一个桥式电路
基于STM32的跑马灯实验的详细解析
工程师电子制作故事:超酷Mac电脑DIY设计
智能手机解锁汽车,华为和比亚迪发布手机NFC车钥匙
整流桥堆怎么测量好坏?
猎豹AI研发初显成效 AI翻译棒有何神奇之处?
LVDS、CML、LVPECL不同逻辑电平之间的互连(二)
尼康全画幅新品D850评测 各主要成像元素都表现优秀
锐尔威视科技RER-USBFHD01M主要应用
固德威三相光伏逆变器出货量激增,排名位于全球前列
采用达芬奇架构NPU,麒麟820 AI跑分排在第三位
机器人安全应用系列之速度与分离的解析
科技云报道:边缘云赛道开启,谁能成为首个“出线”厂商?
memcpy函数实现及其优化
液光固态向欧洲灯具品牌商提出产品专利侵权诉讼
Littelfuse在2018年APEC大会上推出超低导通电阻1200V碳化硅MOSFET