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

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

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

1

1

+ O/ d7 q8 x- \. R" Y9 E  所以先不用配置时钟,直接关注gpio就行了,在查看gpio相关寄存器之前,先拷贝一份简介
) M3 w" I4 |* B. [& u- a
3 S; U0 M) t+ L1。 gpio简介: u$ i6 f" T) n2 R* y  Q
通用输入/输出端口用于芯片与芯片之间的数据传输外部I / O端口最多可以包含8个引脚。 每个引脚可以单独使用编程为数字输入或数字输出。 另外,一些端口可能有备用功能如模拟输入,外部中断,片上外设的输入/输出。 只要一个备用功能可以一次映射到一个引脚。一个输出数据寄存器,输入数据存器,数据方向寄存器和两个配置寄存器与每个端口相关联。 特定端口将作为输入或输出取决于端口的数据方向寄存器的状态。
0 f+ H6 `5 |* T5 `0 _) x1 E* Y
9 n" i: |* y/ V  e7 @2 e1 q; V) o- \0 [9 M) y
  通过上面的简介可以使我们简单的了解gpio的功能。整理stm8 gpio相关寄存器,stm8把管脚分为A,B,C,D,E,F,I, G, H,每组最多8个引脚(这个应该和架构有关)每组有下面四个寄存器,每个寄存器8位。  \9 C" p4 P  ]1 |/ x$ a
0 Y0 \! {. y* {6 }5 b6 S' A
ODR; /*!< Output Data Register  数据输出寄存器,从高到低每位对应每个引脚的输出值 */   
9 C1 o$ b% @* [2 _4 c: z) fIDR; /*!< Input Data Register  数据输入寄存器,从高到低每位对应每个引脚的输出值*// d$ Z) Q9 S8 B: ^  Q
DDR; /*!< Data Direction Register 数据输入输出寄存器,从高到低每位对应每个引脚的数据输入输出模式(0为输入,1为输出)*/
; U) k4 }* P$ S8 N  K" SCR1; /*!< Configuration Register 1 数据输入输出IO配置寄存器1, 可以配置输入的上拉,输出推挽等状态*/- Q' r/ q; i4 t, A: @# _4 p. e) S
CR2; /*!< Configuration Register 2 数据输入输出IO配置寄存器2,配置输入中断和输出速度 */
: q3 Z' D( ?+ c  D/ @2 Z  u
; Q3 f! f* Z3 Q# M8 I
) Q, m/ z0 S: C5 a/ t2 i2.实例
. R+ m1 C1 n5 p$ e! A- {; v. f# D# J
8 `6 V4 \: r  F: N 2.png : e& f. _" J# `7 a; m8 K

! Y) D3 a  _+ j4 ]. y/ U9 j从原理图上看led0 和l led1阴极分别连接到PC0和PC1上,所以我要把PC0和PC1设置为输出模式,推挽模式,速度不需要太快设置成2m就可以
9 @  p* i4 o' L! G( G& r5 x
1 s* G/ U1 o; `( d  @4 H( J5 C* X这是寄存器版的
. V) s$ x* S) h" t, Kvoid main(void)
# {" _5 o( }0 B4 ^# t1 @) B{
6 ?$ ]( L  U' B7 |: L: _! ~
/ ]1 f# h& i- y. ?* X& ]# C) `* {  //init led0 led1
5 ^& D. o- A4 Y. j( Q& u  GPIOC->DDR |= 0x03;  //配置PC0 PC1为输出模式3 M- h! s5 B; P2 M$ d
" U  w, Y8 f) m" Y
  GPIOC->CR1 |= 0x03;  //配置PC0 PC1为推挽模式6 M% w$ ]; q8 b$ t/ u' D! p
  GPIOC->CR2 &= 0xfc;  //配置PC0 PC1输出速度2m: q1 Q- a" [; S" r
! x/ K8 {7 T! C, r

/ X- ~+ N# e' e5 B& a  /* Infinite loop */6 u( K+ z+ z  y. s/ S' r
  while (1)
5 G6 i5 E6 i1 h/ ~  {
) J% {! j7 l: d6 R5 b    GPIOC->ODR |= 0x03;    //熄灭
+ ]4 {5 C) C- m    Delay(1600);7 P8 J3 i$ z) X1 f4 r( K2 r
    GPIOC->ODR &= 0xfc;    //点亮     % F- y2 W! j+ h, Z8 j# Z: T+ \" Y
    Delay(1600);% d* @* D0 s, H. q
  }
8 v  x. f# {* m( a}; D$ w% ]" o3 f3 h

" O' ?9 }- k! e+ E9 o
9 r* ~+ j3 m' `& {  w# q2 `2 O9 u9 m这个是库函数版的% m4 x# |: t* a6 [
void main(void)
/ x( A  U. v* D# L) }/ l, U{# l. T- F3 |3 z9 C

5 G, }; F" A) Y3 \% l  //init led0 led1  L! b) R1 U$ Z6 L7 z2 |; @
  GPIO_Init(GPIOC, GPIO_Pin_0 | GPIO_Pin_1, GPIO_Mode_Out_PP_High_Slow);
/ E6 l$ A7 b: |# O- K5 g' q, G8 @/ Z6 I9 d* V3 }- u9 o
  /* Infinite loop */* `% |* J" n1 y9 \' b+ |( X( I
  while (1)
. d) B5 y% I6 o3 Z+ S  {  {8 ?  ^6 @. r  q0 U! `1 l
    GPIO_ToggleBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1);; p5 O+ R7 y; p2 P
    Delay(1600);- ?9 u" T; d% [) ?
4 X) x6 h+ r4 X; T
  }, h: v) K+ g4 d% }
}
; w" E: Q/ G" n2 [8 @9 z% x* `5 e- Q) ^3 B9 I) P+ Z# h+ e6 \  {5 O& n; q

6 F7 S3 |' w; e7 g* @
9 U0 g: N1 Q& {/ j8 \6 n+ _3 Y: F( @% a8 J
链接:https://pan.baidu.com/s/1c1UQa3m 密码:y9bk1 `* X( t5 ^9 K6 s

9 s  g) [0 U6 ~! `
1 收藏 评论2 发布时间:2017-9-10 22:44

举报

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

所属标签

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