完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
MCU:STM32F103ZET6 IDE: MDK-ARM V5 +STM32CubeMX5.0.0 一. 在 Pinout&Configuration---System Core中:
在MCU管脚图中找到PC0-PC7管脚,右键将管脚设置为GPIO_Output输出模式。 此时在System Core的GPIO中,会出现对应端口,点击端口将GPIO output level设置为low,将User Label定义为LED。 二.在 Project Manager---Project中: 1.设置项目的名称以及保存的位置,选择Toolchain/IDE为MDK-ARM V5, Tips:最好把Linker Settings中的Minimum Heap Size设置为0x600。 2.在Code Generator选项中如下勾选: 最后点Generate Code生成代码,并选择“Open Project”: 首先进入main.h,其中已经对管脚端口进行了宏定义(对应User_Label的内容): #define LED1_Pin GPIO_PIN_0 #define LED1_GPIO_Port GPIOC 在gpio.c中进行了对GPIO的初始化:贴出核心代码与备注 void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; HAL_GPIO_WritePin(GPIOC, LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin |LED5_Pin|LED6_Pin|LED7_Pin|LED8_Pin, GPIO_PIN_RESET); GPIO_InitStruct.Pin = LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin |LED5_Pin|LED6_Pin|LED7_Pin|LED8_Pin; //选择对应的LED管脚 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //输出模式 GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; //输出速度 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 三.在keil中编写主函数main.c: 打开main.c,在while(1)中编写主函数,要实现LED灯亮与灭可以通过调用HAL_GPIO_TogglePin函数与HAL_Delay函数。 void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) 这个函数用来翻转某个引脚的电平状态,可用以实现LED的闪烁。 __weak void HAL_Delay(uint32_t Delay) 是毫秒级的延时函数。 关于HAL库中GPIO的函数介绍:HAL库中GPIO函数介绍。 主程序如下: while (1) { /* USER CODE END WHILE */ HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); HAL_Delay(500);//毫秒级延迟 HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin); HAL_Delay(500); HAL_GPIO_TogglePin(LED3_GPIO_Port,LED3_Pin); HAL_Delay(500); HAL_GPIO_TogglePin(LED4_GPIO_Port,LED4_Pin); HAL_Delay(500); HAL_GPIO_TogglePin(LED5_GPIO_Port,LED5_Pin); HAL_Delay(500); HAL_GPIO_TogglePin(LED6_GPIO_Port,LED6_Pin); HAL_Delay(500); HAL_GPIO_TogglePin(LED7_GPIO_Port,LED7_Pin); HAL_Delay(500); HAL_GPIO_TogglePin(LED8_GPIO_Port,LED8_Pin); HAL_Delay(500); /* USER CODE BEGIN 3 */ } 至此,编译后无错并下载到开发板中,就完成了通过STM32CubeMX调用HAL库实现流水灯的效果程序。 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 04:31 , Processed in 1.054225 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号