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

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

[复制链接]
qazwsx-19104 发布时间:2008-9-3 20:22
STM32初学者笔记(1) 一步步建立自己的STM32函数
/ M% f8 i6 F# O+ Y使用自己建立的 STM32F103.H 的 头文件。里面有大量中文注释。非常适合初学者。$ L& r% T' d5 S; h+ u: J+ G* t" t) B" M

( F1 e) q2 K7 ?+ @1 s& hSTM32的库实在太庞大负责,对初学者来说实在是件头痛的事情!
3 a* R: b8 n  A7 ^/ ?/ t! L. r
5 g+ K1 |' ]- ~4 u1 V下面是万利开发板 LCD DEMO 例子中的函数,改后初学者可以对照学习一下。
2 E/ a$ W" t' w9 d
0 s# s- ~* y8 O3 _9 }% k' }" S6 ~0 x0 E# S' k$ w
//=========================================================================# S- v' n% X) P$ d5 |
//     原函数名称: RCC_Configuration(void)
$ m) C! z) v" g* v/ E//=========================================================================
( m9 S3 I# Q) Y& ^void STM32_RCC_Configuration(void)# A9 D% O; q. p( L7 |
{# W7 G. t! q6 {) q5 X
/ Z8 Z1 Y+ @$ S! L
    STM32_Rcc_Regs->cr.bit.HSEON=0;        // HSE振荡器开启关闭6 i) e( a5 M" m& B
    STM32_Rcc_Regs->cr.bit.HSEBYP=0;    // 外部高速时钟没有旁路
: ^# r" T0 v5 B( W4 g) ?    STM32_Rcc_Regs->cr.bit.HSERDY=0;    // 外部高速时钟就绪标志清零
- @6 U' U% M2 D9 l+ \2 i        0 P; @  Z, y+ _- x* T1 U
    STM32_Rcc_Regs->cr.bit.HSEON=1;        // 外部高速时钟使能    1:HSE振荡器开启
; T$ ]* M: y+ p0 L% y; ?3 t9 C& E4 j; |5 g0 U
    7 l  {+ P4 W2 O/ T
     while( !(STM32_Rcc_Regs->cr.bit.HSERDY ) );//由硬件置1来指示外部时钟已经稳定。
/ l0 T' U: T' i     $ q  F: X' J' t2 L$ y+ @
     /* HCLK = SYSCLK=72MHZ  :HLCK 提供给CPU, 内存和DMA 最大72MHZ  */
4 J3 ^& R4 B/ A6 W* y     STM32_Rcc_Regs->crfgr.bit.HPRE=RCC_AHB_SYSCLK_DIV1_B;    //AHB预分频
  D4 p5 s- i6 F/ X9 |; I" W3 f; D: }
    /* PCLK2 = HCLK/1=SYSCLK=72   PCLK2 提供给 APB2外设,最大72MHZ */
* w: Z! h4 G* j/ a5 g, r. Y: A     STM32_Rcc_Regs->crfgr.bit.PPRE2=RCC_APB2_HCLK_DIV1_B;    //高速APB预分频(APB2)
1 z  R. X7 p+ t, S' _     
1 x. L$ g) G1 v3 t* D% `, S     /* PCLK1 = HCLK/2=SYSCLK/2=36   PCLK1提供给APB1外设,最大36MHZ */
  |' W9 {8 x8 f7 H. U. C! v     STM32_Rcc_Regs->crfgr.bit.PPRE1=RCC_APB1_HCLK_DIV2_B;    //低速APB预分频(APB1)必须保证APB1时钟频率不超过36MHz
5 _2 y/ C# q9 o9 ~8 m6 Z* r1 g! C0 |( u' S4 M
    $ u1 J; M" E- x) ]( l; \
      /* ADCCLK = PCLK2/6     ADC转换速率:72M/6 = 12MHZ  */
$ ]1 \: ?+ {+ Z0 D- Z( ]     STM32_Rcc_Regs->cfgr.bit.ADCPRE=RCC_ADCPRE_PCLK2_DIV6_B;    ) i+ M7 w4 y+ v( L: c9 J* D4 y# |
     
0 C# {8 H- }0 Y! U     /* Flash 2 wait state *// m- G6 Y5 |+ k, z* m4 f/ |3 ^* a
     STM32_Flash_Regs->ACR.all&=((u32)0x00000038);    //清零某些位
) y+ v' g: o. V0 ~0 P) R: U& f     STM32_Flash_Regs->ACR.bit.LATENCY=2;    ) {2 q8 f3 F$ f/ D
    STM32_Flash_Regs->ACR.bit.PRFTBE=1;        //预取缓冲区使能      @6 _$ G( z! k! b7 Z3 ]
/ O# C! t% q( M: g
    /*  PLLCLK = 8MHz * 9 = 72MHZ ) */5 x9 m% o9 V% d6 [
     STM32_Rcc_Regs->cfgr.bit.PLLXTPRE=0;        //HSE分频器作为PLL输入  0:HSE不分频" l: L6 f! F9 _' h0 g3 X& |
     STM32_Rcc_Regs->cfgr.bit.PLLSRC=1;        //HSE时钟作为PLL输入时钟0 p7 T8 S( n$ U  d
     STM32_Rcc_Regs->cfgr.bit.PLLMUL=RCC_PLL_9_B;        //PLL倍频系数9
: o6 d1 j8 q8 W& q9 G
3 D3 y: c  p$ s& r5 V: f- T( W    /* Enable PLL */# @; Q+ E5 y" P8 J
    STM32_Rcc_Regs->cr.bit.PLLON=1;            // PLL使能    ! E6 b7 l' [* `' X7 F/ V; T9 W( V
    while( !(STM32_Rcc_Regs->cr.bit.PLLRDY ) );    // PLL时钟就绪标志    PLL锁定后由硬件置1
' w9 Q; j& a2 W- T+ t
0 e. S- k$ G3 j2 v* B( }     /* Select PLL as system clock source */* r0 Q8 M; _% _2 J! `1 l7 q7 q6 a
     STM32_Rcc_Regs->cfgr.bit.SW=0;    
' e$ v. e( ?1 t5 M% a/ d% w     STM32_Rcc_Regs->cfgr.bit.SW=2;        //RCC_SW_SYSCLK_PLL
/ q4 _* ^# t; \3 p; C
5 V2 M& M9 X+ a/ n! e5 U, o+ U4 k    /* Wait till PLL is used as system clock source */    7 J0 G) E) d+ R) r0 f: f" x
     while(STM32_Rcc_Regs->cfgr.bit.SWS!=2);        //RCC_SWS_SYSCLK_PLL1 r2 }) r7 k$ z
            
* L+ j5 |1 n5 h; j    /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */2 U/ Y5 \& [) g9 G5 K6 B, i* N7 H
    STM32_Rcc_Regs->apb2enr.all |=(RCC_AFIOEN|RCC_IOPAEN|RCC_IOPBEN|RCC_IOPCEN|RCC_IOPDEN|RCC_IOPEEN);! P( Y5 k1 {1 L; p; x
    
( F6 K: G# @0 U  D9 a8 T    /* TIM2 AND CAN clocks enable *// h0 ~' [. s; U7 H
    STM32_Rcc_Regs->apb1enr.all |=(RCC_TIM2EN| RCC_CANEN);    6 Y; ?6 e& \, j0 w. l' h

; W% n+ f' F' U4 o" R. G}
9 i7 p4 `- c" |  I
+ I+ D- T) u( m0 l0 p出处: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
, I* y7 Q. o0 g- e. L  E论坛居然08年就有了
' }0 g6 y8 l( K7 T  {9 F9 U
是啊 当时还在学校
狂奔的蜗牛233 回答时间:2017-2-16 11:20:16
哪里能下载啊?话说这个论坛现在没啥人了吧
wofei1314 回答时间:2017-2-16 12:56:26
写的蛮详细的,不过F7可能用不了哦,可能需要慢慢的向HAL靠近
! R% k0 u* k& Z/ f. i" E) _2 o  X* J" c5 R
才发现,这是08年的帖子,08年还没有HAL....
2 L$ w0 K$ a  x  j7 E* R8 F5 U; \

所属标签

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