你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【学习经验】STM32笔记之七:让它跑起来,基本硬件功能的...

[复制链接]
ashantx 发布时间:2015-5-15 22:47
sw笨笨的STM32笔记之七:让它跑起来,基本硬件功能的建立
& v% Z* C1 B) z0 w2 m: G. N
: d! g0 o4 {* p  g6 }! v, ]2 c" z$ }- n+ n
0、        实验之前的准备1 a* V# b0 ]( X+ G! V
a)        接通串口转接器6 {% M  w$ E3 r4 v( p" E0 o6 U: ^! Y
b)        下载IO与串口的原厂程序,编译通过保证调试所需硬件正常。* R) n! H" |( L, l7 T) J5 |8 w
1、        flash,lib,nvic,rcc和GPIO,基础程序库编写
2 N6 @- P- ~5 [1 B) W) O' F* p& e# T' Pa)        这几个库函数中有一些函数是关于芯片的初始化的,每个程序中必用。为保障程序品质,初学阶段要求严格遵守官方习惯。注意,官方程序库例程中有个platform_config.h文件,是专门用来指定同类外设中第几号外设被使用,就是说在main.c里面所有外设序号用x代替,比如USARTx,程序会到这个头文件中去查找到底是用那些外设,初学的时候参考例程别被这个所迷惑住。
6 R# Y+ K9 ~+ L. Q3 Q( X1 K: _6 Cb)        全部必用代码取自库函数所带例程,并增加逐句注释。
; T( e; m6 z- Z: `0 g9 Yc)        习惯顺序——Lib(debug),RCC(包括Flash优化),NVIC,GPIO: z. w) O6 ?* n. U
d)        必用模块初始化函数的定义:
0 p' {5 n; B; Bvoid RCC_Configuration(void);        //定义时钟初始化函数
% Z* \$ C. }1 f. w! _$ ivoid GPIO_Configuration(void);        //定义管脚初始化函数1 S- g9 _, z& e1 v, w( }" _% W! `
void NVIC_Configuration(void);        //定义中断管理初始化函数9 Q/ O2 \4 U! s
void Delay(vu32 nCount);                        //定义延迟函数
0 N$ {. O) U- s; a3 _6 be)        Main中的初始化函数调用:
9 m" ], p2 O2 j" YRCC_Configuration();                //时钟初始化函数调用
  q! |$ Z+ ?' H9 s0 r* h4 qNVIC_Configuration();        //中断初始化函数调用
% y' w; F& @# X# Z. F; TGPIO_Configuration();        //管脚初始化函数调用
8 X0 |) e0 c# \f)        Lib注意事项:/ `6 n, ]- X7 W/ {
属于Lib的Debug函数的调用,应该放在main函数最开始,不要改变其位置。
# F: }  q6 d# f; \' ]g)        RCC注意事项:
! ?5 E7 ~$ ?. z5 F2 [Flash优化处理可以不做,但是两句也不难也不用改参数……
. d% `: m$ n8 |0 Y  ?5 n1 f" [根据需要开启设备时钟可以节省电能) ]/ X( K5 `- B& Q  p% k6 V7 j$ P# N# t
时钟频率需要根据实际情况设置参数, _: e; j8 l* K) w* a. S0 T
h)        NVIC注意事项  j8 G% c/ }) X7 z& ^* H4 h
注意理解占先优先级和响应优先级的分组的概念
1 b) ]1 z; Z! b' i! t- vi)        GPIO注意事项  C' N) T+ t) h; v0 ~# M/ R0 A- {/ W
注意以后的过程中收集不同管脚应用对应的频率和模式的设置。5 Q. ^) _- ~9 m0 ~
作为高低电平的I/O,所需设置:RCC初始化里面打开RCC_APB2# O$ w% x1 Z  ^4 C6 g8 O
PeriphClockCmd(RCC_APB2Periph_GPIOA);GPIO里面管脚设定:IO输出(50MHz,Out_PP);IO输入(50MHz,IPU);
+ z0 B4 W6 N  U# J2 r. a, l  Ij)        GPIO应用
& {# `) A; _6 j. A) L, [GPIO_WriteBit(GPIOB, GPIO_Pin_2, Bit_RESET);//重置
- S; _/ T% s8 s$ n9 E* MGPIO_WriteBit(GPIOB, GPIO_Pin_2, (BitAction)0x01);//写入1* T# D! h$ @5 Z0 W
GPIO_WriteBit(GPIOB, GPIO_Pin_2, (BitAction)0x00);//写入0( |; W( a" \' ]6 e) F; ]
GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6) ;//读入IO# Y( `$ A! Q- g+ [
k)        简单Delay函数
* ]% g" B0 v5 I. s2 xvoid Delay(vu32 nCount)//简单延时函数) P5 e( g' _/ i
{for(; nCount != 0; nCount--);}
" k1 K5 r) I; w; r/ O实验步骤:
; W$ K) t/ X  Q3 Y4 w2 X% V, VRCC初始化函数里添加:RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE);
. l$ P' R/ i9 X9 ?. y7 w不用其他中断,NVIC初始化函数不用改6 B6 d" D2 b% D/ [2 j
GPIO初始化代码:: ^9 W, P. L* T' J
//IO输入,GPIOB的2、10、11脚输出
. D' O0 `5 T, R4 z9 B  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ;//管脚号
9 t0 A5 f% H7 e/ I; u3 P0 d  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //输出速度
9 {, D: s% k3 P, r  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //输入输出模式" \- a+ C* b" J* V& E; Q% O
     GPIO_Init(GPIOB, &GPIO_InitStructure);              //初始化
. _+ o# h7 v- p2 Y  Y* k简单的延迟函数:$ p9 @! A$ C; H1 v
void Delay(vu32 nCount)                     //简单延时函数  C# f. B9 E2 h3 B5 A
{ for (; nCount != 0; nCount--);}           //循环计数延时
4 y% n) j. A5 F2 W$ s5 K完成之后再在main.c的while里面写一段:4 k% N1 R+ M# r+ `
GPIO_WriteBit(GPIOB, GPIO_Pin_2, (BitAction)0x01);//写入1+ A/ J$ L( X2 A9 c) e5 `4 |- @! J
Delay(0xffff);
) e1 H# X7 D  M9 i3 qGPIO_WriteBit(GPIOB, GPIO_Pin_2, (BitAction)0x00);//写入0
4 ~5 k6 U6 v: ^- XDelay(0xffff);
5 ~3 W3 B1 r$ H! F0 K- C, N3 j就可以看到连接在PB2脚上的LED闪烁了,单片机就跑起来了。
/ k# D- F# V. B0 X" ?4 p  P. M+ w, r9 d/ [9 q
赞 收藏 评论4 发布时间:2015-5-15 22:47

举报

4个回答
Lovely_STM32 回答时间:2015-5-16 07:40:24
楼主有心,谢谢!
为什么是EEFOCUS小白 回答时间:2015-5-16 08:50:59
谢谢分享
sfee2002 回答时间:2015-5-16 09:16:52
多谢分享
qscvhu 回答时间:2015-5-16 09:35:38
基本功,谢谢分享
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版