在线时间11 小时
UID313122
ST金币0
蝴蝶豆0
注册时间2007-4-28
初级会员
- 最后登录
- 2020-4-29
|
a0a.1 0b0c
上一篇文章中介绍了STM32F3系列处理器简单项目工程模板的建立方法,本文中将介绍该模板的用法及编写一个简单的流水灯测试程序:
- 首先,建立一个测试工程命名为Demo,选择处理器为STM32F303VCT6,工程路径就选择在上文中提到的Project文件夹中。将其中的CMSIS、User、Startup、Hardware和STM32F30x_StdPeriph_Driver文件夹添加到测试工程目录中。并添加对应目录下的src文件夹中的所有.c文件到项目中。(注:作为测试程序把官方提供的所有外设库函数包含到项目中,其实为了提高编译速度则只需要选择用到的文件即可)。
- 进入工程配置窗口中,在output选项页中勾选Create Hex文件复选框,然后点击Select Folder for Object,设置工程输出文件目录为Project文件夹下的Object文件夹。
- 切换到Listing选项页,设置Select Folder for Listing输出目录为Project文件夹下的Listing文件夹。
- 切换到C/C++选项页,本选项页用于对工程进行配置。这里,我们为了在测试程序中使用官方提供的标准库函数,在Define栏填入USE_STDPERIPH_DRIVER。在Includes一栏中填入..\CMSIS;..\Libraries\STM32F30x_StdPeriph_Driver\inc;..\User\inc,用于告诉编译器所用到头文件的位置。
- 切换到Debug选项页选择调试工具为ST-Link Debugger
- 同样,切换到Utilites选项页选择调试工具为ST-Link Debugger,选择调试接口为SW接口;点击旁边的Setting按钮,在弹出的窗口中添加Flash为STM32F3xx Flash;
- 点击确定和OK,完成工程配置。
下面,在User文件夹中新建一个main.c文件,拷贝一下内容(一个简单的流水灯程序,里面包含有主要的注释)。用USB数据线连接你的STM32F3探索者套件(USB ST-LINK接口),编译,仿真即可观察到8个板载LED等顺时针旋转(间隔是500ms)。
#include "stm32f30x.h"
#include "core_cm4.h"//包含此头文件之后才可以使用SysTick?
static __IO uint32_t TimingDelay;
void Delay(__IO uint32_t nTime);
int main(void)
{
/*!< At this stage the microcontroller clock setting is already configured,
this is done through SystemInit() function which is called from startup
file (startup_stm32f30x.s) before to branch to application main.
To reconfigure the default setting of SystemInit() function, refer to
system_stm32f30x.c file
*/
u8 i;
RCC_ClocksTypeDef RCC_Clocks;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_GetClocksFreq(&RCC_Clocks);
SysTick_Config(RCC_Clocks.HCLK_Frequency / 10);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE);
/* STM32F3探索者套件中八个LED灯分别对应PE8~PE15*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOE, &GPIO_InitStructure);
while (1)
{
for(i=0;i |
-
-
4.44 MB, 下载次数: 600, 下载积分: ST金币 -1
|