完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32-点灯程序
最近学习使用STM32,做个记录吧。 刚接触,就先从点灯程序开始。单片机的点灯程序,就相当于学语言的hello world程序了。 先简单介绍下开发环境,芯片类型是STM32F030C8,集成开发环境用的是Keil5 MDK-ARM,仿真器使用JLINK。 要点灯,先要确定接灯的引脚。我的板子上是PA0接的一个led灯。 在程序中,就是GPIO_Pin_0了。为了扩展性,或者说,为了方便修改引脚,我使用了一个函数来封装。如下: int get_gpios(){ return GPIO_Pin_0 ;//连接到灯的gpio引脚,可以有多个 } 要点灯,也就是要将这个引脚设置为输出,并控制它的高低电平。我们先来进行初始化设置: void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; /* 使能GPIOA时钟 */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); /* 配置LED相应引脚PA1*/ GPIO_InitStructure.GPIO_Pin = get_gpios(); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIOA-》BSRR = get_gpios() ;//点亮灯 } 具体的闪灯的实现,也写了一个函数,方便后面调用: int flag_led_on=0; void LED_toggle(){ flag_led_on = 1 - flag_led_on; if(flag_led_on!=0){ GPIOA-》BRR = get_gpios() ; //reset } else { GPIOA-》BSRR = get_gpios() ; //set } } 这样,主体的功能就完成了,剩下的就是在主循环中进行调用了。 主函数非常简单: int main(void) { LED_Init();//灯的初始化 while(1){ Delay(1600000);//延时1s LED_toggle(); //LED翻转 } } 这里还有一个新函数:Delay(),就是一个延时函数。为了简化代码,所以延时函数没有使用定时器,是简单的循环等待。如下: void Delay(uint32_t nCount) { for(; nCount != 0; nCount--); } 至此,这个点灯程序就完成了,是不是很简单。 另外,简单说明下延时函数为什么使用了 1600000 为参数。 是我通过实验,发现设置为这个值对应的时间基本上是1s。 但是,在不同的板子上,程序做不同的优化,或者延时代码的写法有所不同,都会导致延时时间的差异。具体取值可以自己根据实际运行情况调整。 以后,我再仔细分析下这个取值的道理。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
2134 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1833 浏览 1 评论
1312 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
856 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
2198 浏览 2 评论
2103浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
1010浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
387浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
718浏览 3评论
708浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-4-5 07:39 , Processed in 0.864992 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191