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

STM32初学者笔记(1) 一步步建立自己的STM32函数

[复制链接]
qazwsx-19104 发布时间:2008-9-3 20:22
STM32初学者笔记(1) 一步步建立自己的STM32函数
  `8 y0 l; h1 [: k2 M6 u+ s- Y8 `使用自己建立的 STM32F103.H 的 头文件。里面有大量中文注释。非常适合初学者。
8 \& Y4 j9 j6 i! @: [: t9 w' D8 o) A% G0 a/ G, V0 C
STM32的库实在太庞大负责,对初学者来说实在是件头痛的事情!
" P6 w  k0 j- C( j. U$ b# Z) `/ @( y2 x& s& z7 O6 N
下面是万利开发板 LCD DEMO 例子中的函数,改后初学者可以对照学习一下。
8 W8 a" A3 E# a, B& o* I( ]  ^/ s" w2 \0 O0 c8 p

& w: b! k, n# |! U//=========================================================================
7 r7 S; ?8 u6 v//     原函数名称: RCC_Configuration(void)
( J  w3 s3 G. e( i//=========================================================================: `, y2 B5 W& N% {
void STM32_RCC_Configuration(void)! K. C: D7 O6 c& c. o! K
{
4 H+ }9 y2 E0 @0 g9 i- }% p8 x# y/ J! M0 @+ B
    STM32_Rcc_Regs->cr.bit.HSEON=0;        // HSE振荡器开启关闭1 @, P0 u5 o# O; `
    STM32_Rcc_Regs->cr.bit.HSEBYP=0;    // 外部高速时钟没有旁路
6 B( X" \; h0 }% ]0 _& a    STM32_Rcc_Regs->cr.bit.HSERDY=0;    // 外部高速时钟就绪标志清零
# F$ A9 C6 k8 F        9 }0 }3 s$ T0 v) X
    STM32_Rcc_Regs->cr.bit.HSEON=1;        // 外部高速时钟使能    1:HSE振荡器开启
. N  X7 q7 V0 A. n$ P4 c
- D& C3 g0 k6 Y2 B8 s3 B- R5 e0 E    
5 O' a' R8 H! e3 h+ k" E     while( !(STM32_Rcc_Regs->cr.bit.HSERDY ) );//由硬件置1来指示外部时钟已经稳定。
9 u0 T2 ?# N1 y0 t0 F     9 c! L1 C4 T3 q- G; `  s1 e
     /* HCLK = SYSCLK=72MHZ  :HLCK 提供给CPU, 内存和DMA 最大72MHZ  */
( T! `+ D" O2 p: y     STM32_Rcc_Regs->crfgr.bit.HPRE=RCC_AHB_SYSCLK_DIV1_B;    //AHB预分频
, j% P9 _$ e; O. U" k
  h, `# Z6 P1 `# M' J    /* PCLK2 = HCLK/1=SYSCLK=72   PCLK2 提供给 APB2外设,最大72MHZ */
# @2 V$ k% E: n, k6 K" q0 k% H     STM32_Rcc_Regs->crfgr.bit.PPRE2=RCC_APB2_HCLK_DIV1_B;    //高速APB预分频(APB2)
, T% g5 k$ e# x% S! M1 d     
& k6 V1 k! I* G5 ?) W     /* PCLK1 = HCLK/2=SYSCLK/2=36   PCLK1提供给APB1外设,最大36MHZ */
3 Y0 X' c* @' E1 ~# i+ ?     STM32_Rcc_Regs->crfgr.bit.PPRE1=RCC_APB1_HCLK_DIV2_B;    //低速APB预分频(APB1)必须保证APB1时钟频率不超过36MHz
5 F' R) C+ y  e' g# ^0 Q" m+ C
+ f1 D/ A0 ]0 ~4 Y/ u    * \: I' m0 K( K  a1 w+ O& m
      /* ADCCLK = PCLK2/6     ADC转换速率:72M/6 = 12MHZ  */
8 {4 b0 Y3 O7 L5 f# G$ q     STM32_Rcc_Regs->cfgr.bit.ADCPRE=RCC_ADCPRE_PCLK2_DIV6_B;    
& O& N: A& p  m. d     9 U4 `: E* p/ k: U  S" n
     /* Flash 2 wait state */
3 U" P9 f1 ~+ e- q) _     STM32_Flash_Regs->ACR.all&=((u32)0x00000038);    //清零某些位
" t3 X  Q8 K% H4 q- }     STM32_Flash_Regs->ACR.bit.LATENCY=2;    " J  j( m; \+ f+ l
    STM32_Flash_Regs->ACR.bit.PRFTBE=1;        //预取缓冲区使能    " o; q/ G7 b3 q6 Q
/ d0 P. Y& y. A
    /*  PLLCLK = 8MHz * 9 = 72MHZ ) */1 P2 ?8 u6 P5 A0 t
     STM32_Rcc_Regs->cfgr.bit.PLLXTPRE=0;        //HSE分频器作为PLL输入  0:HSE不分频
1 l3 r" \' X6 ^8 X     STM32_Rcc_Regs->cfgr.bit.PLLSRC=1;        //HSE时钟作为PLL输入时钟
1 G' Y8 f* W; F, j1 j% {% ?     STM32_Rcc_Regs->cfgr.bit.PLLMUL=RCC_PLL_9_B;        //PLL倍频系数98 g' N, P$ j) O/ w+ w- I7 E

. v  f; B0 e  ?. W, c    /* Enable PLL */( `" W  [8 n7 I
    STM32_Rcc_Regs->cr.bit.PLLON=1;            // PLL使能    , O0 K2 f0 }, v$ m. D5 j
    while( !(STM32_Rcc_Regs->cr.bit.PLLRDY ) );    // PLL时钟就绪标志    PLL锁定后由硬件置1
3 ]! u5 E. b4 ?6 Q
) N, K, ~/ `2 F" D, i; I! f% E     /* Select PLL as system clock source */, V7 G! y' _, n& t# a; O4 o
     STM32_Rcc_Regs->cfgr.bit.SW=0;    
7 Y# M7 W+ W; _& w$ C     STM32_Rcc_Regs->cfgr.bit.SW=2;        //RCC_SW_SYSCLK_PLL
& a8 g. K2 `$ z
$ k9 Q' m' g) w    /* Wait till PLL is used as system clock source */    3 e9 U4 o. _6 S9 @* }& T* ]
     while(STM32_Rcc_Regs->cfgr.bit.SWS!=2);        //RCC_SWS_SYSCLK_PLL
) c( P3 Q% t- A( \            ) J. b, U9 u3 ^/ N! D+ d/ x* J
    /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */
/ Y1 f+ N5 F/ R    STM32_Rcc_Regs->apb2enr.all |=(RCC_AFIOEN|RCC_IOPAEN|RCC_IOPBEN|RCC_IOPCEN|RCC_IOPDEN|RCC_IOPEEN);9 |, I8 C/ ]; m5 s/ o. T
    
$ _. c& y' J# c6 A& C    /* TIM2 AND CAN clocks enable */# P' W, a" h0 y1 u1 S9 F: t) h, B
    STM32_Rcc_Regs->apb1enr.all |=(RCC_TIM2EN| RCC_CANEN);    
! r! G  ?) H, [- c  }" V8 J, Y6 s; q3 `) I+ x  _0 I
}) x$ f! g) g3 q$ ^6 I# p
+ E1 [: @4 `  A0 F( @
出处:netjob
赞 收藏 1 评论4 发布时间:2008-9-3 20:22

举报

4个回答
北斗光寒 回答时间:2015-3-5 09:03:58
论坛居然08年就有了
bit 回答时间:2015-3-5 09:25:47
北斗光寒 发表于 2015-3-5 09:03" L* u& W: `) B9 V8 g; E' D
论坛居然08年就有了

1 a# q: ~+ s7 p: x3 M: O, ]( W# P是啊 当时还在学校
狂奔的蜗牛233 回答时间:2017-2-16 11:20:16
哪里能下载啊?话说这个论坛现在没啥人了吧
wofei1314 回答时间:2017-2-16 12:56:26
写的蛮详细的,不过F7可能用不了哦,可能需要慢慢的向HAL靠近
( o# [( a( @! j) H* K: I
9 T8 c% T$ P& |5 Z; z; M3 q才发现,这是08年的帖子,08年还没有HAL....
* N7 z6 _) N8 g3 @$ T5 g

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版