.安装软件、驱动

JLINK驱动、PL2303驱动、MDK4.7(装完破解)

.源码编译完要用到的工具

烧录工具MCUISP、串口调试助手

.KEIL建工程模板(2种)

(1)寄存器开发:工程文件夹下建2文件夹命名“USER”“SYSTEM”———新建工程到“USER” 选择‘是’———拷贝例子程序中的“SYSTEM”覆盖———KEIL中右键Target1选Manage Components,Groups下建“USER”“SYSTEM”———为“SYSTEM”添加delay.c sys.c usart.c———Project下Options for Target ‘target1’_C/C++中‘Include Paths’添加3个C文件的头文件———Output下勾选‘Create HEX File’  OK!

测试代码(STM32F103RB):

int main (void)
{
u8 t=0;
Stm32_Clock_Init(9);
delay_init(72);
uart_init(72,9600);
while(1)
{
printf("t:%d\n",t);
delay_ms(500);
t++;
}

}

(2)库函数开发:

①建STM32F10x_FWLib:拷STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下src、inc文件夹

②建CORE:拷1.STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下core_cm3.c和core_cm3.h

2.STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下所有文件(s..x_md.s中等容量,ls小,hs大)

③建USER:拷1.STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h

2.STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下4个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h

④右键点击Target1选Manage Components将Target名字改掉,Groups栏删掉一个,建USER,CORE,FWLIB,

⑤为1.FWLIB添加STM32F10x_FWLib/src下要用到的外设的库文件

2. CORE添加core_cm3.c,startup_stm32f10x_md.s

3. USER添加main.c,stm32f10x_it.c,system_stm32f10x.c

⑥魔术棒c/c++选项.1.Include Paths添加3个目录,注意STM32F10x_FWLib的是定位到inc文件夹

2.C/C++__Preprocessor Symbols__Define中填上“STM32F10X_MD,USE_STDPERIPH_DRIVER”(不要引号STM32F10X_MD大容量STM32F10X_LD小容量)

3.Output勾选HEX选项

⑦覆盖掉main.c中代码

#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;

int main(void)
{
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
while (1)
{
/* Set PD0 and PD2 */
GPIOD->BSRR = 0x00000005;
/* Reset PD0 and PD2 */
GPIOD->BRR = 0x00000005;
}
}

#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
while (1)
{
}
}
#endif

⑧OK!

STM32初始的更多相关文章

  1. 第一章 初始STM32

    1.3什么是STM32? ST是意法半导体,M是MIcroelectronisc的缩写,32表示32位. 合起来就是:ST公司开发的32位微控制器. 1.4 STM32 能做什么? STM32属于一个 ...

  2. 初始STM32

    主要内容: 1.什么是STM32 STM32有什么 STM32怎么选型号 一:什么是STM32 ST— 意法半寻体,是一个公司名,即SOC厂商(ARM是IP厂商,STM32中内核由ARM设计,外设例如 ...

  3. 初始STM32固件库

    1-汇编编写的启动文件 startup_stm32f10x_hd.s:设置堆栈指针.设置PC指针.初始化中断向量表.配置系统时钟.对用C库函数_main,最终去到C的世界 2-时钟配置文件 syste ...

  4. STM32之看门狗(独立与窗口)

    广大的互联网网友们,大家早上中午晚上好,我是某某某..对于狗..看过<忠犬八公>的我.无不深深的被狗的义气与灵气所震撼..我也觉得在所有mcu中用看门狗来形容让系统复位的功能是很恰当的.也 ...

  5. stm32定时器实现60秒定时秒表

    #include "led.h" #include "delay.h" #include "key.h" #include "sy ...

  6. STM32之EXTI——外部中断

    互联网的广大网友,大家早上中午晚上好.EXTI...故名思义..EX表外,出..I表示Intrrupt..所以合起来就是外部中断...说到这..我觉得我最近的六级水平(背单词)又进了一步,稍微自夸了下 ...

  7. STM32之独立看门狗与窗口看门狗总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

  8. [stm32] STM32的通用定时器TIMx系统了解

    通用定时器(TIMx) 一.TIMx简介 二.TIMx主要功能 三.TIMx功能描述 3.1 时基单元 3.2 计数器模式 3.3 时钟选择 3.4 捕获/比较通道 3.5 输入捕获模式 3.6 PW ...

  9. [stm32] NRF24L01+USART搞定有线和无线通信

    前言 一般进行远程监控时,2.4G无线通信是充当远程数据传输的一种方法.这时就需要在现场部分具备无线数据发送装置,而在上位机部分由于一般只有串口,所以将采集到的数据送到电脑里又要在上位机端设计一个数据 ...

随机推荐

  1. IntelliJ IDEA 破解之后,用了一段时间后,打开软件提示 no suitable licenses left on the license server

    IntelliJ IDEA 破解之后,用了一段时间后,打开软件提示 no suitable licenses left on the license server 需要让我们重新注册,原来是之前的地址 ...

  2. Flask 教程 第二十二章:后台作业

    本文翻译自The Flask Mega-Tutorial Part XXII: Background Jobs 这是Flask Mega-Tutorial系列的第二十二部分,我将告诉你如何创建独立于W ...

  3. C++函数的理解思考

    函数指针调用方式 void testmy(int k) { cout << "testzhixing " <<k << endl; } int ...

  4. java猜拳

    import java.util.Scanner; public class startGuess { Person jia; Computer yi; int count; public void ...

  5. http-equiv属性的属性值X-UA-Compatible

    参考:https://blog.csdn.net/changjiangbuxi/article/details/26054755

  6. 今日份学习: Docker 和 Docker的使用

    笔记 Docker 能做什么? 保证开发.测试.交付.部署的环境完全一致 保证资源的隔离 启动临时的.用完即弃的环境,例如测试 迅速(秒级)超大规模部署和扩容 Docker 基本概念 镜像 image ...

  7. cgpwn2-嫖来的wp

    本想练习pwn的题目活跃下思维,但是接触后发现完全不懂,gg 然后就多方搜集,弄来了一些工具(IDA pro.pwntool)结果自己还是不会用,又是一番刷视频,结果看完又是一脸懵. 只记得一个快捷键 ...

  8. java并发:join源码分析

    join join join是Thread方法,它的作用是A线程中子线程B在运行之后调用了B.join(),A线程会阻塞直至B线程执行结束 join源码(只有继承Thread类才能使用) 基于open ...

  9. web页面的JS部分乱码了!!

    在引用的地方给出编码即可 <script type='text/javascript' src='/zbjc/resources/normal/index_page.js' charset=&q ...

  10. swoole之异步文件IO

    一.代码部分 读: <?php /** * 异步文件系统仅限于4.3.0之前的版本 * 读取文件 */ $filename = dirname(__FILE__).DIRECTORY_SEPAR ...