打印
[STM32F4]

【f446re开发板试用】逐步吃透Nucleo-F446开发板-更新systick设置

[复制链接]
1894|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Deaby|  楼主 | 2015-10-1 00:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Deaby 于 2015-11-3 11:31 编辑

8楼更新正文第一帖,点亮第一个LED。

9楼更新正文第二贴,systick配置,配置好systick后可以用systick来做较精准的延时。



本以为最近人品不太好申请没成功,没想到昨天开发板已经收到了:victory:
先上图!!!
最近在计划做个四轴飞行器玩玩,就先以研究这块开发板开始吧!

今天第一天,先上个电,安装好驱动以备后面使用。

接下来正式试用就留在后面吧,想想就好激动!!!





沙发
MasterSU| | 2015-10-2 10:10 | 只看该作者
拿这块做四轴,好奢侈

使用特权

评论回复
板凳
Deaby|  楼主 | 2015-10-3 13:29 | 只看该作者
本帖最后由 Deaby 于 2015-10-3 13:38 编辑

今天有点时间先研究了下电路图,发现做这块板子的人为此累死了不少脑细胞,小小一块板子使用了如此多的跳线(由于跳线确实太多没数过来具体多少个),各种灵活各种方便就不多说了,直接上电路!!!
https://bbs.21ic.com/forum.php?mod=attachment&aid=NTExOTAwfDc1MGE1OWYwODQ1YzVkZGFkM2U3MjQ1OGRkYjBhYTg3fDE3MzE2OTU2MTg%3D&request=yes&_f=.pdf

貌似学习进度是有点慢,慢慢来吧,对于没多少基础的我来说希望能一步一个脚印,逐步能吃透它!!!


使用特权

评论回复
地板
Deaby|  楼主 | 2015-10-3 13:41 | 只看该作者
MasterSU 发表于 2015-10-2 10:10
拿这块做四轴,好奢侈

目前对四轴还没任何概念,请多多指教!

使用特权

评论回复
5
lkl0305| | 2015-10-3 20:23 | 只看该作者
还有这好事,那我也想收一个:lol

使用特权

评论回复
6
734774645| | 2015-10-3 20:52 | 只看该作者
就是需要懂那个平衡的原理

使用特权

评论回复
7
Deaby|  楼主 | 2015-10-4 13:52 | 只看该作者
lkl0305 发表于 2015-10-3 20:23
还有这好事,那我也想收一个

你每天坐门口等说不定就收到了:P

使用特权

评论回复
8
Deaby|  楼主 | 2015-10-28 21:23 | 只看该作者
最近比较忙没来论坛,今天更新下,先点亮一个LED吧。
安装KEIL5和相关驱动的过程就不赘述了,直接上代码和相关注意事项,延时先用土办法代替,下次更新用systick延时
1、注意事项:
a、开发板上LED灯接在PA5端口
b、任何外设需要开启相应的时钟才能正常工作
c、需要加入的头文件有
    #include "stm32f4xx.h"
    #include "led.h"
    #include"stm32f4xx_gpio.h"
    #include" stm32f4xx_rcc.h"
2、代码实例
------------------------------------------------------------------------------------------------------------------------------------------------
main.c文件

#include "stm32f4xx.h"
#include "led.h"

void delay();

int main()
{
        led_init();

        while(1)
        {
                led(LED_ON);
                delay();
                led(LED_OFF);
                delay();
        }

}


void delay()
{
    u32 a,b;
    for(a=9999;a>0;a--)
        for(b=999;b>0;b--);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
led.c文件

#include "led.h"

void led_init()
{
        GPIO_InitTypeDef GPIO_InitStruct;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
       
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_DOWN;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
       
        GPIO_Init(GPIOA,&GPIO_InitStruct);
       
        led(LED_OFF);
}
       
void led(u8 ledstatus)
{
        if(ledstatus)
                GPIO_SetBits(GPIOA,GPIO_Pin_5);
        else
                GPIO_ResetBits(GPIOA,GPIO_Pin_5);
}

---------------------------------------------------------------------------------------------------------------------------------------------------
led.h文件
#ifndef _LED_H
#define _LED_H

#include"stm32f4xx.h"

#define LED_ON  1
#define LED_OFF 0

void led_init(void);
void led(u8 ledstatus);

#endif   /*_LED_H*/
---------------------------------------------------------------------------------------------------------------------------------------------------------------

使用特权

评论回复
9
Deaby|  楼主 | 2015-11-3 11:27 | 只看该作者
2、        systick设置
1)        systick设置在core_cm3.h文件的static __INLINE uint32_t SysTick_Config(uint32_t ticks)函数中,如果该函数配置成功则返回0,如果配置错误,则返回1.
通过该函数配置后,systick选择systemcoreclock做为systick时钟源,允许systick进中断,并开启systick使能。
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            
/* Reload value impossible */
                                                               
  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;     
  /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  
/* set Priority for Cortex-M0 System Interrupts */
  SysTick->VAL   = 0;   
  /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    
/* Enable SysTick IRQ and SysTick Timer */
  return (0)      
/* Function successful */
}

2)        Systick初始化函数
void systick_init()
{
        if(SysTick_Config(SystemCoreClock/1000000))   /*1us进一次中断*/
        {
                while(1);
        }
        SysTick->CTRL  &= ~SysTick_CTRL_ENABLE_Msk;   /*配置好之后先关掉*/
}
3)        如用sysytick配置delay函数,需根据systemcoreclock的值来确定延时时间。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝