一、说明
如图1-1所示为STM32F746G-DISCO开发板正反面实物图,很高兴有资格能使用到这块开发板。我个人是第一次见过7系列的板子,非常遗憾说自己能力有限,所写相关测试项目都是基础硬件测试(可能还不全)。
这是一篇关于STM32F74G-DISCO开发板的介绍、体验帖子。同时还收入了一些收集整理的资料分享给大家。东西有点多,但展示和资料较全面,需要点时间一点点完善这篇帖子,也欢迎喜欢STM32的朋友给提点意见。
二、开发板介绍
如图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,为开发板自带例程运行效果。
三、基本性能测试
1、GPIO-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);
}
未完,更多开发板介绍及案例见下篇
原创作品,未经权利人授权禁止转载。详情见转载须知。 举报文章
我要举报该内容理由
×