历史上的今天
今天是:2025年03月18日(星期二)
2019年03月18日 | STM32第一个demo与软件设置
2019-03-18 来源:eefocus
所使用软件版本为:Keil MDK4.12
单片机型号为:STM32F103C8T6
STM32第一个demo
1.建立文件夹
GPIO_TEST存放整个工程项目,在该项目文件夹下建立子文件夹存放不同类别的文件。
Obj:存放工程文件
Out:存放编译输出文件
Sorce:存放源代码文件

2.新建工程
打开KEIL3,这个时候显示的应该是上次使用过的工程。

在其中新建工程,把该工程存放在刚刚建立的Obj子文件夹下。


点击保存后弹出选择器件窗口,选择选择使用器件型号。

点击确定后弹出:

这个时候选择“是”,工程建立成功。

3.工程管理
这项对于项目的运行没有必要性,只是为了方便项目的管理。
在工程上右键,选择

弹出如下工程文件管理窗口,在此处可以添加Lib和Source。

经过操作,建立如下文件夹有备使用,这个可以根据个人编程习惯处理。

4.编写代码
新建源文件,保存在Sorce子文件夹下,注意文件名为gpio_test.c,一定要有C后缀。


把该文件添加到工程。

编写代码。
#include "stm32f10x_lib.h"GPIO_InitTypeDef GPIO_InitStructure;//LED端口初始化void LED_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);}void Delay(vu32 nCount){for(; nCount != 0; nCount--);}main() //内部8M RC时钟 ,无倍频{LED_Init();while(1){Delay(0x8ffff);Delay(0x8ffff);GPIO_ResetBits(GPIOC, GPIO_Pin_13);Delay(0x8ffff);Delay(0x8ffff);GPIO_SetBits(GPIOC, GPIO_Pin_13);}}注意:在这里用到了RCC和GPIO的库函数,所以必须把这两个函数加入工程。


关于固件库函数在文件夹:C:\Keil\ARM\RV31\LIB\ST\STM32F10x
为了不在操作过程中避免改变KEIL文件夹下的库函数,可以固件函数库放到其他文件夹下,如:E:\jy\work\STM\WxlStm32\LAB\library
其中stm32f10x_lib.c文件是整个库的一些定义,是必须要的。
加入后的工程为:

这里,如果有的人觉得不知道使用了哪些库函数,不晓得添加哪些库文件进入工程,有个最简单的办法就是添加所有的固件库函数到工程,为了方便可以直接添加:C:\Keil\ARM\RV31\LIB\ST路径下的STM32F10xR.LIB文件进入工程。

之后进行编译和烧写。不过在编译和烧写前需要先进行软件设置。
软件设置
这些设置也可以在工程建立后马上进行。
打开选项窗口:

每一页的设置如下:











设置完这些后就可以编译并下载或调试程序了。



程序在这里已经能正常运行了,会看到单片机上PC13对应的LED灯闪烁。
史海拾趣
|
上一篇中(即《Android编译环境(1) - 编译Native C的helloworld模块》),我们试用了通过标准的Android.mk文件来编译C模块,下面我们来试试如何直接运用gcc命令行来编译,从而了解Android编译环境的细节。 Android编译环境提供了”showcommands” ...… 查看全部问答> |
|
本人在利用wince开发汽车故障诊断系统 采用扬创S3c2440开发板 打算采用BP神经网络的作为诊断的算法 想知道有人做过类似的不? 系统资源能否支持呢? ps:s3c2440主频500M 32m内存 小弟再次谢过… 查看全部问答> |
|
这段代码是我老师给我的,是用keil uvision2软件纺写的 是bulkloop框架里的 void DA5384(unsigned char indata) { unsigned char i; unsigned int mydata; unsigned int dataT; //SCLK =PA0, DIN=PA1 CS =PA5 ...… 查看全部问答> |
|
#include bit b1,b2; bdata char bx,by; xdata char zz; pdata char buf[100]; void main (void) { { b1=0; b2=1; bx=12; ...… 查看全部问答> |
|
本节通过一个例子来说明C程序从浮点变换至定点的方法。这是一个对语音信号(0.3kHz~3.4kHz)进行低通滤波的C语言程序,低通滤波的截止频率为800Hz,滤波器采用19点的有限冲击响应FIR滤波。语音信号的采样频率为8kHz,每个语音样值按16位整型数存放在i ...… 查看全部问答> |




