新手刚入手32,根据视频寄存器编写跑马灯,延时函数偏差很大?而且延时初始化时为什么要赋值?

2019-08-17 00:20发布

[mw_shl_code=c,true]#include "led.h"
#include "stm32f10x.h"               
#include "delay.h"       

int main(){
        delay_init(50);
        led_Init();       
        while(1){
                GPIOB->ODR|=1<<5;
                GPIOE->ODR&=0<<5;
                delay_ms(500);
       
           GPIOB->ODR&=~(1<<5);
                 GPIOE->ODR|=~(0<<5);
                 delay_ms(500);   
                }


}
[/mw_shl_code]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
liuliuliu
1楼-- · 2019-08-17 02:45
麻烦先好好看一下手册!你这么问,我感觉你可能C语言也没什么基础,定义的函数是这样的:void delay_init(u8 SYSCLK),你要调用delay_init函数,必须填入参数才可以,不然肯定报错,也不是随便填的,里面的值是MCU的主频,STM32F103ZET6主频是72M,如果MCU是STM32F103ZET6就填72,你填50肯定是错的,MCU的主频都是8的倍数!
先复习一下C语言的基础,再对照手册和例程去学
豆子的愿望
2楼-- · 2019-08-17 07:06
 精彩回答 2  元偷偷看……
sdjncy
3楼-- · 2019-08-17 12:40
liuliuliu 发表于 2017-7-14 16:10
麻烦先好好看一下手册!你这么问,我感觉你可能C语言也没什么基础,定义的函数是这样的:void delay_init(u ...

正解~      
执迷
4楼-- · 2019-08-17 16:25
初始化为什么要赋值、、、看来你C语言基础颇差。。不要急。。先了解sys。usart。delay。这几个以后会经常用到
起个名字真难
5楼-- · 2019-08-17 19:32
正点原子中的delay_Init(u8 Sysclk)的形参是系统时钟,是进入AHB预分频器的系统时钟。用51单片机讲就是,设置为50MHz,机器周期就比72MHz长了,一个简单指令一个机器周期,延时500次,肯定比预期的长
豆子的愿望
6楼-- · 2019-08-18 00:34
liuliuliu 发表于 2017-7-14 15:49
麻烦先好好看一下手册!你这么问,我感觉你可能C语言也没什么基础,定义的函数是这样的:void delay_init(u ...

多谢你的解答,这方面真的很薄弱啊。最后的提点真的是很感谢。

一周热门 更多>