OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6146|回复: 10

编写的代码为什么不能运行跑马灯实验

[复制链接]

40

主题

140

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2019-8-31
在线时间
269 小时
发表于 2019-8-31 13:26:25 | 显示全部楼层 |阅读模式
1金钱
在keil软件中添加了启动文件startup_stm32f40_41xx.s,在mian函数中添加以下代码:
int main(void)
{
    // 开启时钟  GPIOF
    *((volatile unsigned int *)(0x40023800+0x30))  |=  (0x01<<5);   

    // 选择PF9的模式为输出模式
    *((volatile unsigned int *)(0x40021400+0x00))  &= ~(0x03<<2*9);
    *((volatile unsigned int *)(0x40021400+0x00))  |= (0x01<<2*9);

    //配置PF9的输出类型为推挽输出
    *((volatile unsigned int *)(0x40021400+0x04)) &= ~(0x01<<9);

    //配置PF9的输出速度为50Hz
    *((volatile unsigned int *)(0x40021400+0x08)) &= ~(0x03<<2*9);   
    *((volatile unsigned int *)(0x40021400+0x08)) |= (0x02<<2*9);

    //配置PF9 为带上拉输出
    *((volatile unsigned int *)(0x40021400+0x0C)) &= ~(0x03<<2*9);   
    *((volatile unsigned int *)(0x40021400+0x0C)) |= (0x01<<2*9);

    //PF9输出低电平,LED0亮
   *((volatile unsigned int *)(0x40021400+0x014)) &= ~(0x01<<9);  
}
为什么直接操纵寄存器无法实现跑马灯?

最佳答案

查看完整内容[请看2#楼]

再次尝试解决问题,只保留启动文件和main函数文件,在main函数文件中添加SystemInit()函数,其中SystemInit()函数为空,成功点亮LED灯。或者屏蔽启动文件中的调用SystemInit()函数部分代码,不必再main函数中添加SystemInit()函数,也可点亮LED灯。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

40

主题

140

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2019-8-31
在线时间
269 小时
 楼主| 发表于 2019-8-31 13:26:26 | 显示全部楼层
再次尝试解决问题,只保留启动文件和main函数文件,在main函数文件中添加SystemInit()函数,其中SystemInit()函数为空,成功点亮LED灯。或者屏蔽启动文件中的调用SystemInit()函数部分代码,不必再main函数中添加SystemInit()函数,也可点亮LED灯。
回复

使用道具 举报

4

主题

203

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2927
金钱
2927
注册时间
2019-8-16
在线时间
315 小时
发表于 2019-8-31 16:32:46 | 显示全部楼层
老哥,我试了,你这个没问题的,下面控制灯闪烁
while(1)
        {
                *((volatile unsigned int *)(0x40021400+0x014)) &= ~(0x01<<9);  
                delay_ms(50);
                *((volatile unsigned int *)(0x40021400+0x014)) |= (0x01<<9);
                delay_ms(50);
        }
回复

使用道具 举报

6

主题

412

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2692
金钱
2692
注册时间
2019-8-14
在线时间
413 小时
发表于 2019-8-31 17:28:09 | 显示全部楼层
代码没毛病,后面接个跑马灯代码试试就行了
回复

使用道具 举报

40

主题

140

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2019-8-31
在线时间
269 小时
 楼主| 发表于 2019-8-31 17:58:29 | 显示全部楼层
cc花无缺 发表于 2019-8-31 16:32
老哥,我试了,你这个没问题的,下面控制灯闪烁
while(1)
        {

为什么我把代码烧到探索者F4板子上没反应啊
回复

使用道具 举报

4

主题

203

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2927
金钱
2927
注册时间
2019-8-16
在线时间
315 小时
发表于 2019-8-31 18:01:57 | 显示全部楼层
FourReal 发表于 2019-8-31 17:58
为什么我把代码烧到探索者F4板子上没反应啊

老哥,你是用探索者F4例程改的吗
回复

使用道具 举报

40

主题

140

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2019-8-31
在线时间
269 小时
 楼主| 发表于 2019-8-31 18:07:50 | 显示全部楼层
cc花无缺 发表于 2019-8-31 18:01
老哥,你是用探索者F4例程改的吗

我只用了一个启动文件和main.c文件,F4例程根本看不懂,为什么要添加那些文件,有什么用
回复

使用道具 举报

4

主题

203

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2927
金钱
2927
注册时间
2019-8-16
在线时间
315 小时
发表于 2019-8-31 18:13:22 | 显示全部楼层
FourReal 发表于 2019-8-31 18:07
我只用了一个启动文件和main.c文件,F4例程根本看不懂,为什么要添加那些文件,有什么用

你可以去看一下视频教程,慢慢来学,有很多是启动板子的必要.c文件,
回复

使用道具 举报

4

主题

203

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2927
金钱
2927
注册时间
2019-8-16
在线时间
315 小时
发表于 2019-8-31 18:17:29 | 显示全部楼层
FourReal 发表于 2019-8-31 18:07
我只用了一个启动文件和main.c文件,F4例程根本看不懂,为什么要添加那些文件,有什么用

不用那些文件,那自己要写很多相关代码才能点灯的
回复

使用道具 举报

40

主题

140

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2019-8-31
在线时间
269 小时
 楼主| 发表于 2019-8-31 18:24:11 | 显示全部楼层
cc花无缺 发表于 2019-8-31 18:17
不用那些文件,那自己要写很多相关代码才能点灯的

我看野火的视频,就这两个文件就把灯点亮了啊,到探索者板子上就不行了
回复

使用道具 举报

4

主题

203

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2927
金钱
2927
注册时间
2019-8-16
在线时间
315 小时
发表于 2019-8-31 18:30:33 | 显示全部楼层
FourReal 发表于 2019-8-31 18:24
我看野火的视频,就这两个文件就把灯点亮了啊,到探索者板子上就不行了

哥哥,板子是不一样的呀,你可以下载正点原子的对应资料看一下,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 22:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表