发 帖  
原厂入驻New

[经验] 【STM32项目】开发板正反面实物图、电路介绍

2019-9-26 11:24:30  916 STM32 开发板
分享
1
一、说明




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

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

本帖被以下淘专辑推荐:

相关经验

十个名字V 2019-9-26 11:25:18
开发板介绍





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

      [1]   STM32F746NGH6内部有1M的flash存储空间、340Kb的RAM存储空间、封装格式为BGA216(即216引脚)。

      
[1]   4.3寸TFT类型的彩色屏幕,分辨率为480x272 ,支持电容感应触摸。
[2]   • USB OTG HS FS
[3]   串行音频接口SAI ,支持音频解码。
[4]   ST-MEMS digital microphones
[5]   Quad-SPI 接口,128M的 Flash存储空间。
[6]   128M的SDRAM存储空间
[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,为开发板自带例程运行效果。


回复

举报

十个名字V 2019-9-26 11:26:04
基本性能测试

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);
}

回复

举报

dmx0829 2019-11-5 08:59:13
谢谢分享 学习学习!
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
关闭

站长推荐 上一条 /10 下一条

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