完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
RT: STM32跑马灯实验 编译通过 可以上传 LED灯就是不亮。 小弟之前是专门搞硬件开发的,现,在想学学嵌入式,板子是自己做的,MCU用的是STM32F407VGT6。用J-link调试的。
代码如下 芯片设置如下 |
|
相关推荐
22个回答
|
|
|
LED 灯部分的电路原理图传上来看一下
|
|
|
|
|
|
还没看见LED的问题,先说一个,我记得Target的Xtal是设置的外部晶振的频率,不是芯片的主频。你的晶振不会是168MHz的吧?
|
|
|
|
|
|
|
|
|
|
|
|
看上去是LED配置是没问题的,先别翻转直接点亮看看能不能亮,要是延时确定是500ms应该是能看出来效果的,你debug跟下看看点灯的代码走到了没。
|
|
|
|
|
|
新手的话建议找个现成的工程修改下,或者直接cube生成个工程,因为牵扯到好多系统文件
|
|
|
|
|
|
PCout的宏定义也要发出来看看
|
|
|
|
|
|
本帖最后由 wenyangzeng 于 2018-5-30 15:42 编辑
LED驱动的高低电平: GPIOC->ODR |=0X41; GPIOC->ODR &=~0X41; |
|
|
|
|
|
//IO口操作,只对单一的IO口! //确保n的值小于16! #define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出 #define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入 #define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出 #define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入 #define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出 #define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入 #define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //输出 #define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //输入 #define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //输出 #define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //输入 #define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //输出 #define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //输入 #define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //输出 #define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //输入 #define PHout(n) BIT_ADDR(GPIOH_ODR_Addr,n) //输出 #define PHin(n) BIT_ADDR(GPIOH_IDR_Addr,n) //输入 #define PIout(n) BIT_ADDR(GPIOI_ODR_Addr,n) //输出 #define PIin(n) BIT_ADDR(GPIOI_IDR_Addr,n) //输入 |
|
|
|
|
|
#include "sys.h" #include "delay.h" #include "usart.h" void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); //时钟使能 //GPIO C0,C6初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_6 ; //LED0 -- PC0 LED1 -- PC6 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //普通输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化GPIO GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_6); //GPIO C0,C6设置为高 } int main(void) { delay_init(168); //初始化延时函数 LED_Init(); //初始化LED端口 /**下面是通过直接操作库函数的方式实现IO控制**/ while(1) { GPIO_ResetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_6); //GPIO C0,C6设置为低 delay_ms(500); //延时500ms GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_6); //GPIO C0,C6设置为高 delay_ms(500); //延时500ms } } |
|
|
|
|
|
改成这样呢 |
|
|
|
|
|
你有没有试试下个同芯片,确定没有问题的程序进去。先确定是软件还是硬件的问题。
|
|
|
|
|
|
你先看看你软仿时候的寄存器是否配置正确,再看看程序是否真的下载到片子上。
|
|
|
|
|
|
是不是硬件设计有问题?是不是没有下载到板子上,仿真器没有选对?软件方面最好把整个工程文件打包上来看看。
|
|
|
|
|
|
先看看代码问题
|
|
|
|
|
|
再查查硬件问题
|
|
|
|
|
|
|
|
|
|
|
|
各位大侠,这位兄弟用的是标准正点原子程序,程序没有什么错,但是,这个JLINK 和开发板的连接正确吗? 这个LED灯是否连接在PC0,PC6上?你开发板的BOOT0在下载完程序后,是否置0了哪?还有 Target 页面中的IROM1 为啥不是从0x8000000 0x100000 开始,要从 0x8020000 0xE0000 开始? 楼主找到原因了吗
|
|
|
|
|
|
配置不对了哦
|
|
|
|
|
|
好好检查一下了
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1328 浏览 1 评论
1070 浏览 0 评论
936 浏览 0 评论
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
5174 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
3974 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-13 21:10 , Processed in 1.522556 second(s), Total 112, Slave 94 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2930