今天捡了个Nucleo-F401RE(其实是同事离职后,收拾他桌子时发现他遗留下来的);看着这块板子做的挺精致,拿来玩玩!
搜索了点资料如下
CN2的短接线主要是将SWD连接到了F401芯片上,若想用这块板子的st_link调试其他设备,可将跳线去除,将CN4用线连接到其他设备。
• STM32F401RET6微控制器,基于ARM Cortex-M4处理器,带DSP,最高支持84MHz主频
• 支持Arduino UNO R3 Shield扩展板,微控制器所有IO口引脚通过排针座引出
• ST-LINK/V2-1调试器,支持对外部微控制器调试
• 3个LED:一个USB通讯LED、一个电源LED、一个用户LED;两个机械按键:复位、用户
• USB接口的3个不同功能:虚拟串口、容量存储、调试接口
• 3种不同供电方式:mini USB接口供电、IO引脚用电、通过Arduino UNO R3 Shield接口供电
• 支持Keil、IAR、embed在线IDE的设计工具
现在用这块板点亮用户LED;
-
新建一个LED的project
-
选择STM32F401RE芯片
-
之后进行如下配置
- 新建一个叫USER的文件夹,在里面创建main.c文件;将stm32f4xx_conf.h添加到这个文件夹下;
并且将STM32F4xx_StdPeriph_Driver文件夹放在项目根目录,这个两个items去网上自己下载;
选择keil里面的project manage items
创建两个Groups,分别叫USER和LIB
将main.c添加到USER里面
将STM32F4xx_StdPeriph_Driver文件夹下src下的所有.c文件添加到LIB中
-
鼠标右击工程进入配置的选项面板,进入C/C++的选项里输入STM32F4XX,USE_STDPERIPH_DRIVER,这就是告诉编译器有用ST的库了
-
写代码
#include "stm32f4xx.h"
void GPIO_Initialize (void)
{
RCC->AHB1ENR |= (1ul << 0);
GPIOA->MODER &= ~((3ul << 2*5));
GPIOA->MODER |= ((1ul << 2*5));
GPIOA->OTYPER &= ~((1ul << 5));
GPIOA->OSPEEDR &= ~((3ul << 2*5));
GPIOA->OSPEEDR |= ((1ul << 2*5));
GPIOA->PUPDR &= ~((3ul << 2*5));
}
int main()
{
GPIO_Initialize();
while(1)
{
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);
int temp_cnt=1000000;
while(temp_cnt--);
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_RESET);
temp_cnt=1000000;
while(temp_cnt--);
}
}
- 编译发现有错误如下!!
declaration may not appear after executable statement in block
因为keil 默认编译标准是C89
FSMC不支持
9. 上网搜索解决方法如下
8. 编译通过,烧录到板子里面,LED闪烁。