STM32F746G-DISCO体验与资料分享(上篇)

STM32 资料 案例 测试
武力戡乱
发布时间: 2018-11-02
阅读: 2072

一、说明



如图1-1所示为STM32F746G-DISCO开发板正反面实物图,很高兴有资格能使用到这块开发板。我个人是第一次见过7系列的板子,非常遗憾说自己能力有限,所写相关测试项目都是基础硬件测试(可能还不全)。


这是一篇关于STM32F74G-DISCO开发板的介绍、体验帖子。同时还收入了一些收集整理的资料分享给大家。东西有点多,但展示和资料较全面,需要点时间一点点完善这篇帖子,也欢迎喜欢STM32的朋友给提点意见。


二、开发板介绍





如图2-1所示,这张图直观的标注了板子上元件的位置和名称。这里主要只介绍几个核心设备,与之相关的手册请参考第6小节。开发板支持如下功能:


      [1]   STM32F746NGH6内部有1Mflash存储空间、340KbRAM存储空间、封装格式为BGA216(即216引脚)。


     

[1]   4.3TFT类型的彩色屏幕,分辨率为480x272 ,支持电容感应触摸。

[2]   USB OTG HS FS

[3]   串行音频接口SAI ,支持音频解码。

[4]   ST-MEMS digital microphones

[5]   Quad-SPI 接口,128M Flash存储空间。

[6]   128MSDRAM存储空间

[7]   供用户使用和复位摇杆按键各一个

[8]    板载接口:

Camera接口

两个迷你USB接口

以太网RJ45接口

SPDIF RCA input

外部扩展扬声器接口

迷你SD卡接口

RF-EEPROM daughterboard

[1]   板载扩展接口:支持扩展Arduino ™ Uno V3

[2]    支持ST-Link下载、调试、仿真功能,多种供电方式。

[3]   支持STM32Cube 软件包,提供案例。

[4]   支持IAR ™ , Keil ® , GCC-based IDEs, ARM ® mbed ™多种编译器。


如图所示2-3,为开发板自带例程运行效果。



三、基本性能测试


1GPIO-LED



部分代码:

void LED_Init(void)

{         

      GPIO_InitTypeDef  GPIO_InitStruct;

      __GPIOI_CLK_ENABLE();

      GPIO_InitStruct.Pin = GPIO_PIN_1;              // 靠近边缘处LED

      GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

      GPIO_InitStruct.Speed = GPIO_SPEED_FAST;

      GPIO_InitStruct.Pull = GPIO_PULLUP;

      HAL_GPIO_Init(GPIOI, &GPIO_InitStruct); 

      HAL_GPIO_WritePin(GPIOI,GPIO_PIN_1,GPIO_PIN_RESET); }

void LED_Flash(void)

{   

      HAL_GPIO_TogglePin(GPIOI,GPIO_PIN_1);

      delay_ms(1000);

}


2、GPIO-Button+LED




部分代码:

void Key_Info_Init(void)

{

      Key_Info.Num = 0;

      Key_Info.State = Key_UP;

      Key_Info.Num_Last = 0;     

      Key_Info.Key_Delay_Cnt = 0;

}

void Key_Init(void)

{

      GPIO_InitTypeDef GPIO_InitStruct;

      __GPIOI_CLK_ENABLE(); 

GPIO_InitStruct.Pin = GPIO_PIN_11; 

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_NOPULL; 

GPIO_InitStruct.Speed = GPIO_SPEED_FAST;

HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);

      Key_Info_Init();

}

void Key_Read(void)

{

      u8 Key_CurrNum;

      delay_ms(1);

      Key_CurrNum = 0;

      Key_CurrNum = Independent_Key_Scan();

      if((Key_Info.Shake_LastNum == Key_CurrNum)&&(Key_CurrNum != 0))

      {

           Key_Info.Key_Delay_Cnt++;

           if(Key_Info.Key_Delay_Cnt > KEY_SHAKE_DELAY)

           {

                 Key_Info.Key_Delay_Cnt = KEY_SHAKE_DELAY + 1;

                 Key_Info.State = Key_KEEP;

           }

           if(Key_Info.Key_Delay_Cnt == KEY_SHAKE_DELAY)

           {

                 Key_Info.Num = Key_Info.Shake_LastNum;

                 Key_Info.State = Key_DOWN;

           }

      }

      else

      {

           Key_Info.Key_Delay_Cnt = 0;

           Key_Info.Num = 0;

           Key_Info.State = Key_UP;

      }

      Key_Info.Shake_LastNum = Key_CurrNum;

}


3、外部中断部分代码


void GPIO_EXTI_ISR(uint16_t GPIO_Pin)

{

      if(GPIO_Pin == GPIO_PIN_11)

      {

           HAL_GPIO_TogglePin(GPIOI,GPIO_PIN_1);

      }

}

int main(void)

{

      System_Init();

      SysTick_Init(NULL);

     

      LED_Init();       

      Exti_Init(GPIO_EXTI_ISR);

     

      while(1)

      {

 

      }

}

void Exti_Init(void (*ISR)(uint16_t GPIO_Pin))

{

      GPIO_InitTypeDef GPIO_InitStruct;

      Exti_ISR.exti_isr = ISR;

      __GPIOI_CLK_ENABLE(); //使能GPIOI时钟

 GPIO_InitStruct.Pin = GPIO_PIN_11; 

          GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;

          GPIO_InitStruct.Pull = GPIO_NOPULL; 

          GPIO_InitStruct.Speed = GPIO_SPEED_FAST;

    HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);

          /* Enable and set Button EXTI Interrupt to the lowest priority */

    HAL_NVIC_SetPriority(EXTI15_10_IRQn , 0x0F, 0);

    HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

}

void EXTI15_10_IRQHandler(void)

{

      HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);

}

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

{

      if(Exti_ISR.exti_isr != NULL) Exti_ISR.exti_isr(GPIO_Pin);

}


未完,更多开发板介绍及案例见下篇


原创作品,未经权利人授权禁止转载。详情见转载须知 举报文章

点赞 (0)
武力戡乱
评论(0)

登录后可评论,请 登录注册

相关文章推荐
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回

我要举报该内容理由

×
请输入您举报的理由(50字以内)