STM32f103C8T6入门学习记录(3)
在output 选项下,在create HEX file 前打上钩, 点击select Folder for Objects 选择输出文 件夹为 output文件夹;
在Listing选项下,点击select Folder for Listings 选择链接文 件夹为 List文件夹;
在C/C++选项下, define里 填入 USE_STDPERIPH_DRIVER,STM32F10X_MD 中间用英 文的逗号;(一定要记得)
Include Paths 里,点击右边的文件路径框 ,选择相应的CMSIS, libraries 里的INC 和SRC 还有 User ;
也可以填绝对路径,比如: C:\\Users\\Administrator\\Desktop\\STM32编程练习 \\fisrt_project\\CMSIS 这样比较麻烦
好了,这下开始编译链接:
0 Error , 0 Warring;
First_project 就建好了;万里长征的第一步,总算走出去了。
总结:关键是Option for target 的设置,包括output ,listing,和C/C++,尤其是C/C++这个选项里一定要设置对。
Define:USE_STDPERIPH_DRIVER,STM32F10X_MD,这是预定义的两个宏定义。 在stm32f10x.h这个头文件里搜索 USE_STDPERIPH_DRIVER 有这么一段 #ifdef USE_STDPERIPH_DRIVER #include \ #endif
据说是定义控制了是否在应用中启用外设驱动。
在stm32f10x.h这个头文件里搜索 STM32F10X_MD,
/* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */ STM32中密度器件
#ifdef STM32F10X_MD
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */
: : :
#endif /* STM32F10X_MD */ 可能是定义中断向量的值吧
就写到这里,才发现自己做也许一个两个小时就能建好工程,但是要把写出来我却用了一个下午。为了大家跟我都尽快学会STM32,我会努力学习将成果与大家分享;
2013年12月25日
第三章
STM32点亮第一个LED 使用keil for ARM MDK 软件仿真
按照上一章建立的第一个工程模板,我们只需要在main函数里加入相关的点亮led灯的代码,并使用keil的软件仿真功能。
软件仿真在一定程度上可以在设计的初期发现程序的错误,减少我们下载到开发板的麻烦。但是纯软件的仿真的正确,也不能保证程序就正确。有时候仿真正确,实物却没这个效果。有时软件仿真结果是错误,你分析你的程序却没错误。
遇到多了,经验也就出来,前几天我仿真一个STM32的Systick ,仿真结果就不对,程序就是对的,我估计也许是软件本身的问题。
我建议用STM32+JLINK 进行仿真,有个硬件平台结果的正确性就有保证。
1、Main.c 函数代码:
#include \void delay(void) /* */ {
int i,j; for(i=1000;i>0;i--) for(j=1000;j>0;j--); }
void GPIO_Config(void) {
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB , &GPIO_InitStructure); }
int main(void) { GPIO_Config(); SystemInit(); while(1) { GPIO_SetBits(GPIOB,GPIO_Pin_5 ); //点亮PB.5 delay(); GPIO_ResetBits(GPIOB,GPIO_Pin_5 );//熄灭PB.5 delay(); GPIO_SetBits(GPIOB,GPIO_Pin_6 );//点亮PB.6 delay(); GPIO_ResetBits(GPIOB,GPIO_Pin_6 );//熄灭PB.6 delay(); } }
2、代码分析:
GPIO_InitTypeDef GPIO_InitStructure;
定义一个结构变量GPIO_InitStructure ,结构体类型为GPIO_InitTypeDef ,相当于int A ; GPIO_InitTypeDef =int GPIO_InitStructure=A一样。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 开启GPIOB的时钟,要使用某个管脚都需要开启该管脚的时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6; 管脚号设置为第五脚和第六脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Speed_10MHz, GPIO_Speed_2MHz, GPIO_Speed_50MH
设置管脚电平翻转的速率,比如不要求快速变化一般10M,做串口的时候设置较高波 特率的话就使用50MHZ的。
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
设置输出为推挽输出。 它有8中工作模式,输出只有两种推挽和开漏输出。其它可以参
…… 此处隐藏:653字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




