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

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

[复制链接]
qazwsx-19104 发布时间:2008-9-3 20:22
STM32初学者笔记(1) 一步步建立自己的STM32函数7 A; M! m1 c/ S+ w: N: F6 [" q
使用自己建立的 STM32F103.H 的 头文件。里面有大量中文注释。非常适合初学者。+ r8 z  t8 ^# C  Z" e
7 c8 T7 C% s" L& y& g" e; k6 M
STM32的库实在太庞大负责,对初学者来说实在是件头痛的事情!' z' v0 r7 h- s/ ^% t4 I
+ }3 x$ d3 N  b8 _; q+ y: I' I0 Z
下面是万利开发板 LCD DEMO 例子中的函数,改后初学者可以对照学习一下。4 R, `1 X0 [% @6 H) o: @/ d0 l' A+ k

7 Y' ?2 N: ~. K
+ b* d6 Y6 v2 |; o  u7 r, c//=========================================================================
! X  ]) l0 E9 ?4 J* J/ P1 [//     原函数名称: RCC_Configuration(void)0 [* T* r( z# _/ q
//=========================================================================4 W5 @8 y! r/ X; c8 J  Y7 q
void STM32_RCC_Configuration(void)7 U* M/ H5 ]! W  Z" W
{4 T+ q3 m1 `; L- B' y* q/ b1 T
# p8 E$ E5 Z, l- P! Q6 F3 H2 u1 O
    STM32_Rcc_Regs->cr.bit.HSEON=0;        // HSE振荡器开启关闭: G  ?! k9 H' t
    STM32_Rcc_Regs->cr.bit.HSEBYP=0;    // 外部高速时钟没有旁路! i4 e' S. ^9 `  i, T
    STM32_Rcc_Regs->cr.bit.HSERDY=0;    // 外部高速时钟就绪标志清零5 k" r5 H7 }' k/ _( }
        
+ _( A" t/ g$ `6 g# R" ]2 l    STM32_Rcc_Regs->cr.bit.HSEON=1;        // 外部高速时钟使能    1:HSE振荡器开启
9 Y/ _( m: F% [" F, N. Y; m! I
' f5 c3 ?( H: ?3 z, m: t: h# L    
- L8 B( q. b# @+ s; G! X     while( !(STM32_Rcc_Regs->cr.bit.HSERDY ) );//由硬件置1来指示外部时钟已经稳定。
' v+ z5 W  E6 O# z( k+ r0 ^     
1 O5 S  ?+ D4 u" \/ l+ L* c     /* HCLK = SYSCLK=72MHZ  :HLCK 提供给CPU, 内存和DMA 最大72MHZ  */$ B' `5 }* I! C
     STM32_Rcc_Regs->crfgr.bit.HPRE=RCC_AHB_SYSCLK_DIV1_B;    //AHB预分频5 }& z3 p8 T0 a1 i' `; `

8 N! ^2 C3 H! E) |& t2 e- J- m/ T# H    /* PCLK2 = HCLK/1=SYSCLK=72   PCLK2 提供给 APB2外设,最大72MHZ */3 G0 G3 m) X. ]
     STM32_Rcc_Regs->crfgr.bit.PPRE2=RCC_APB2_HCLK_DIV1_B;    //高速APB预分频(APB2)
' H+ V. T/ N0 h4 x) j     6 e1 ^# r5 b, F9 \, {6 N
     /* PCLK1 = HCLK/2=SYSCLK/2=36   PCLK1提供给APB1外设,最大36MHZ */, s- Q( z- L2 R8 l1 V/ r) j' ?) m0 c
     STM32_Rcc_Regs->crfgr.bit.PPRE1=RCC_APB1_HCLK_DIV2_B;    //低速APB预分频(APB1)必须保证APB1时钟频率不超过36MHz: ?- T. _* @( T+ A7 A7 C5 g

; K0 M' ^- i( T* H8 A6 R    " Q( `- [: h' Y0 X5 \2 o
      /* ADCCLK = PCLK2/6     ADC转换速率:72M/6 = 12MHZ  */1 U4 z) T0 M# U  Y; D: m1 q: j! ]
     STM32_Rcc_Regs->cfgr.bit.ADCPRE=RCC_ADCPRE_PCLK2_DIV6_B;    8 r. m6 M* r( c/ o4 Y, @
     
4 K6 N, R% M: F( }( S8 E' _! k     /* Flash 2 wait state */$ D/ R- @% {3 A
     STM32_Flash_Regs->ACR.all&=((u32)0x00000038);    //清零某些位( E  p. a4 I4 ^
     STM32_Flash_Regs->ACR.bit.LATENCY=2;    
7 T+ D( F( s) t$ X" g    STM32_Flash_Regs->ACR.bit.PRFTBE=1;        //预取缓冲区使能    : F4 a/ X5 @. Q5 k

6 K9 D* _% m% J% V/ _" M: @    /*  PLLCLK = 8MHz * 9 = 72MHZ ) */
1 U- f# r: s, E$ ~8 m% v& Z     STM32_Rcc_Regs->cfgr.bit.PLLXTPRE=0;        //HSE分频器作为PLL输入  0:HSE不分频
: T9 N: u7 ?# Z) \' a     STM32_Rcc_Regs->cfgr.bit.PLLSRC=1;        //HSE时钟作为PLL输入时钟
* t2 |/ _0 b7 V: m( L' \, R' M     STM32_Rcc_Regs->cfgr.bit.PLLMUL=RCC_PLL_9_B;        //PLL倍频系数9
& p& N- f: h0 R6 M$ ~4 y1 M
8 Z( f8 B9 k6 _5 ]! `0 u: `. _- i! i    /* Enable PLL */
7 q/ o. E- f4 J. [& J# D3 r    STM32_Rcc_Regs->cr.bit.PLLON=1;            // PLL使能    
' c! g: f" I& R' V; h    while( !(STM32_Rcc_Regs->cr.bit.PLLRDY ) );    // PLL时钟就绪标志    PLL锁定后由硬件置16 q& |8 b' \  n7 t
3 ]8 }# x; q2 A" W
     /* Select PLL as system clock source */; z% G1 U8 r# c8 X* x
     STM32_Rcc_Regs->cfgr.bit.SW=0;    
1 T+ K, l6 J- X! d4 D+ v     STM32_Rcc_Regs->cfgr.bit.SW=2;        //RCC_SW_SYSCLK_PLL1 L! @2 u, w/ Q5 m4 S+ W& u. s! J

9 N5 @# E3 p. V- N    /* Wait till PLL is used as system clock source */    
8 c, s6 ?4 z" [4 b" Z8 d     while(STM32_Rcc_Regs->cfgr.bit.SWS!=2);        //RCC_SWS_SYSCLK_PLL, P6 K$ W* A5 q/ ^0 i7 p
            
5 m& G: V/ D" g* T- U    /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */" Z/ ^- d( ]+ R1 o9 j% e
    STM32_Rcc_Regs->apb2enr.all |=(RCC_AFIOEN|RCC_IOPAEN|RCC_IOPBEN|RCC_IOPCEN|RCC_IOPDEN|RCC_IOPEEN);) ^; a! K8 Q, l5 N9 ~
    ; b; ]' \7 g- q; v% I
    /* TIM2 AND CAN clocks enable */
# n8 c, |& i3 h* Z2 g" W) x+ P    STM32_Rcc_Regs->apb1enr.all |=(RCC_TIM2EN| RCC_CANEN);    6 W+ a$ l9 ]. N( c' d6 ~' Y
2 N) y3 U8 A6 G" n* J8 x& ]& h
}
3 I) P1 u5 q, N
+ y5 }$ k, x  |  i出处: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
' g$ l( i9 b# A8 T' F$ Q- Q论坛居然08年就有了

% R* D% i5 l7 ]" H# i8 R是啊 当时还在学校
狂奔的蜗牛233 回答时间:2017-2-16 11:20:16
哪里能下载啊?话说这个论坛现在没啥人了吧
wofei1314 回答时间:2017-2-16 12:56:26
写的蛮详细的,不过F7可能用不了哦,可能需要慢慢的向HAL靠近
' ]6 ~( R- @& y) S8 j
7 h9 K7 ^7 g- F; T6 {9 V: k0 f才发现,这是08年的帖子,08年还没有HAL....: e9 f  ]1 L+ S+ }" B

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版