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

stm8小白学习笔记 02. 点亮led

[复制链接]
此号为经注册 发布时间:2017-9-10 22:44
  新建完工程后当然是点亮led,,这个可是单片机界hello world。  查看数据手册(感谢谷歌翻译)后得之,stm8会自动采用内部16M晶振,并八分频后作为系统时钟,  G* X+ S0 a1 y% A

1

1

* r% h+ R8 h% F) M  所以先不用配置时钟,直接关注gpio就行了,在查看gpio相关寄存器之前,先拷贝一份简介
  w- i% w4 M: k4 K( q& R# D; J
/ `! ^/ |* a+ D# v1 M# k$ o1。 gpio简介
6 |5 h9 g! Y1 L; x5 B通用输入/输出端口用于芯片与芯片之间的数据传输外部I / O端口最多可以包含8个引脚。 每个引脚可以单独使用编程为数字输入或数字输出。 另外,一些端口可能有备用功能如模拟输入,外部中断,片上外设的输入/输出。 只要一个备用功能可以一次映射到一个引脚。一个输出数据寄存器,输入数据存器,数据方向寄存器和两个配置寄存器与每个端口相关联。 特定端口将作为输入或输出取决于端口的数据方向寄存器的状态。+ C& m* _* u/ [* n5 t

0 w& r4 }: C: `3 e3 {, `+ @
% x# v- e' y; b  Y( v  通过上面的简介可以使我们简单的了解gpio的功能。整理stm8 gpio相关寄存器,stm8把管脚分为A,B,C,D,E,F,I, G, H,每组最多8个引脚(这个应该和架构有关)每组有下面四个寄存器,每个寄存器8位。' o6 W, R: t& i6 H( {7 _+ N
2 x# [# N* V& m9 U
ODR; /*!< Output Data Register  数据输出寄存器,从高到低每位对应每个引脚的输出值 */   
- J$ O; g* P  e" m  B, a7 X) W) UIDR; /*!< Input Data Register  数据输入寄存器,从高到低每位对应每个引脚的输出值*/
2 R7 H" ?+ A4 A$ ?# E% yDDR; /*!< Data Direction Register 数据输入输出寄存器,从高到低每位对应每个引脚的数据输入输出模式(0为输入,1为输出)*/1 d6 Z/ E/ v2 `
CR1; /*!< Configuration Register 1 数据输入输出IO配置寄存器1, 可以配置输入的上拉,输出推挽等状态*/
9 x4 b2 V. Q3 g8 w9 C2 x+ CCR2; /*!< Configuration Register 2 数据输入输出IO配置寄存器2,配置输入中断和输出速度 */: n- T! r0 v9 w  B
; Z1 c: C( p0 t3 R; Z+ K

; {& O/ T+ q1 h* r; Y5 b. @+ E2.实例
; O  o% E+ H6 a  X. m0 v  X' t$ A) ^  W  l: J" D
2.png
7 _$ `; G3 y0 i  o7 ?- ^* X- e. S1 I- \' ?% w; q
从原理图上看led0 和l led1阴极分别连接到PC0和PC1上,所以我要把PC0和PC1设置为输出模式,推挽模式,速度不需要太快设置成2m就可以
" f3 }7 E; x1 l- ?0 p$ z" C. [! ~+ [
9 b0 |- o# U6 r- u; k* Y/ y3 @这是寄存器版的
4 g/ i0 O8 E- f. Xvoid main(void)5 R6 H$ G, H& X. v" g& {% b5 s6 U+ k
{3 R  |, ~4 @. y5 R
% K$ s4 b* z4 I) S6 a% W5 X0 R# h
  //init led0 led1
' o: R+ n4 O, k% l6 O( v  GPIOC->DDR |= 0x03;  //配置PC0 PC1为输出模式4 r; l$ W5 M0 y7 }7 I, S* P

. E4 p# }, F! B/ v* Z; n4 N. |. a  GPIOC->CR1 |= 0x03;  //配置PC0 PC1为推挽模式) R# o* x& i0 B' i: n
  GPIOC->CR2 &= 0xfc;  //配置PC0 PC1输出速度2m
2 [6 U) s. A) Q- E* T4 F- f- P# H" R" _6 }* A/ f
8 U; d1 w, I. r! c& G: g# m6 C
  /* Infinite loop */
# l6 u* u$ _+ p" U$ R- N  while (1)
7 v% Q- w: R+ |8 O- d  {  v$ i/ o, ]. Z' R" L9 P* N* C
    GPIOC->ODR |= 0x03;    //熄灭3 R- F4 k/ O8 k
    Delay(1600);7 f# m: I7 {( K0 s8 B( y( I) Q# c9 z
    GPIOC->ODR &= 0xfc;    //点亮     # ^8 k1 ^" G7 u  X7 }
    Delay(1600);, @! R0 m" Q% B) |8 l  k
  }
: H  ]$ v0 e1 t, q' Q% Q- S}' L6 e# A& U" M2 D3 G

# {2 g" n7 f* b: s! \) }. j  Z/ G0 J
这个是库函数版的
7 Y- a+ T2 \# X, `9 r8 W% j8 i- a, }void main(void)
( G8 j8 R! r; _, i" c$ k8 N/ F" L{! C% y6 e( v4 E. u: \0 {
% ]/ b# I& K; l: j6 a& W; ?
  //init led0 led1
  B5 f# h! d: i7 @8 J  GPIO_Init(GPIOC, GPIO_Pin_0 | GPIO_Pin_1, GPIO_Mode_Out_PP_High_Slow);; {- d' `- w3 E3 j8 n% Y2 e* }

5 T- C1 ~% @  h$ Y! x  Y  /* Infinite loop */
8 z3 ]) p$ N$ Y( y  while (1)
+ y+ U5 M4 R5 d' `* M+ I- T( X  {
& A! u3 _+ |4 Z1 Z  a7 a    GPIO_ToggleBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1);
  F4 l- v" n( F: C    Delay(1600);: V3 d  c! |  J, M# Y* @! @

; o+ k' z$ E6 q$ e* Z  }
+ X1 V& T- ~4 X7 C, G}
/ y7 A( r: G, ]1 B) h3 J: U% ~  Z! Z. |) A) P0 k& u
! N  ?; w- h9 I4 O0 J

7 o# a: V6 ?1 G4 i+ n9 }- d
# d5 z# |4 O& d链接:https://pan.baidu.com/s/1c1UQa3m 密码:y9bk
1 H  i( q" q) J4 {4 u8 Z4 y! V
; s8 w, s, D, q! o- \% J# ~  z
1 收藏 评论2 发布时间:2017-9-10 22:44

举报

2个回答
a564656232 回答时间:2017-12-4 21:22:46
你这写,也太累了。
五哥1 回答时间:2017-12-5 00:28:46
写的不错,加油

所属标签

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