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

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

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

1

1

' Z$ E  C- o$ ^1 o# w) l  所以先不用配置时钟,直接关注gpio就行了,在查看gpio相关寄存器之前,先拷贝一份简介
7 Y7 B' G% h  `& L  x7 n" ~& X, m8 [  Y  T$ M4 `0 A
1。 gpio简介
0 j& ^* b/ ~# p7 T. o通用输入/输出端口用于芯片与芯片之间的数据传输外部I / O端口最多可以包含8个引脚。 每个引脚可以单独使用编程为数字输入或数字输出。 另外,一些端口可能有备用功能如模拟输入,外部中断,片上外设的输入/输出。 只要一个备用功能可以一次映射到一个引脚。一个输出数据寄存器,输入数据存器,数据方向寄存器和两个配置寄存器与每个端口相关联。 特定端口将作为输入或输出取决于端口的数据方向寄存器的状态。
8 }" D/ \( c; V
/ W9 r6 x" @0 T
5 A$ U) Q/ k; t8 q- x3 H  通过上面的简介可以使我们简单的了解gpio的功能。整理stm8 gpio相关寄存器,stm8把管脚分为A,B,C,D,E,F,I, G, H,每组最多8个引脚(这个应该和架构有关)每组有下面四个寄存器,每个寄存器8位。
; ]$ ]8 \" l6 v: }# D; z; q2 C8 {- J- A" v$ F
ODR; /*!< Output Data Register  数据输出寄存器,从高到低每位对应每个引脚的输出值 */    % I% R/ m8 P+ ~: F' d) l6 I; T# ~
IDR; /*!< Input Data Register  数据输入寄存器,从高到低每位对应每个引脚的输出值*/. p6 g4 E' ~3 W" ?
DDR; /*!< Data Direction Register 数据输入输出寄存器,从高到低每位对应每个引脚的数据输入输出模式(0为输入,1为输出)*/* |5 a$ Z3 B8 t# N
CR1; /*!< Configuration Register 1 数据输入输出IO配置寄存器1, 可以配置输入的上拉,输出推挽等状态*/# w4 C- v4 n) Y" p5 s
CR2; /*!< Configuration Register 2 数据输入输出IO配置寄存器2,配置输入中断和输出速度 */
: j* `3 @8 i0 J+ O6 M, U2 R, p
# P# Y* r* ]" `" B3 K5 e$ Q4 _+ Z$ n' w' E4 s
2.实例
$ T" `4 y" K" X: H7 V  Q/ w& u( _4 S  t! ^
2.png
& E: j- {" J( z- x2 w
3 ^7 s& e* i* w, `从原理图上看led0 和l led1阴极分别连接到PC0和PC1上,所以我要把PC0和PC1设置为输出模式,推挽模式,速度不需要太快设置成2m就可以
) h7 Q. C* z" T0 s. H& j
7 Q! ]4 i+ Z  U, [' G! _) E这是寄存器版的' {2 A& l/ N$ U
void main(void)
4 A% X9 B* W- L1 Y6 T8 [3 r{
' ^2 B9 j' U# D* W) ?" Z: w' M/ s
  //init led0 led1
1 y9 G8 j8 ^' d7 k/ a4 O  GPIOC->DDR |= 0x03;  //配置PC0 PC1为输出模式; u1 P; ^, t0 p2 h8 W

2 m% \8 d  Y6 Q# ~5 o: E  GPIOC->CR1 |= 0x03;  //配置PC0 PC1为推挽模式4 a  M# ]8 g7 T. T+ E. N
  GPIOC->CR2 &= 0xfc;  //配置PC0 PC1输出速度2m! O$ D0 n; i- A0 m% `
0 O* f: t% Y3 e9 j# ^4 v% q
" v2 [2 h) B+ l0 p9 ?$ Y
  /* Infinite loop */; G5 L( p) J4 e" o: X
  while (1)5 s! b4 c/ v0 h
  {4 ]9 z) ~" o4 F& t' U# ~
    GPIOC->ODR |= 0x03;    //熄灭1 O# Q4 w4 B& }+ Q
    Delay(1600);
. t1 S9 c+ V; e9 M# i/ f7 q; o    GPIOC->ODR &= 0xfc;    //点亮     
6 j# {- K- K& p1 S    Delay(1600);: T) Y( u/ n4 w3 A
  }% Q0 o6 a9 ^+ z9 \; h
}& B* u7 x. r5 d% p3 |% {, c8 ~% h
2 X# D6 b9 }, R# m% i2 _
& O# I# s1 ?, g6 L$ E# m6 G
这个是库函数版的6 z- m6 @- \$ S: s7 l! {
void main(void)5 h+ j6 ?. r9 u5 u% `
{: o& j# k8 p: D/ q+ I8 H& v& q
; e% s" \" i  n
  //init led0 led1" T8 q. N1 [2 N  [# V; F# T
  GPIO_Init(GPIOC, GPIO_Pin_0 | GPIO_Pin_1, GPIO_Mode_Out_PP_High_Slow);
: D; c+ ]: x* M
& X% ?- X3 d" m6 U, h  /* Infinite loop */! Z" E% W  Q% e% M
  while (1)
' F1 b; D: ?7 n9 S4 r9 r1 u; @  {
2 o' D8 g5 x7 H% p4 G    GPIO_ToggleBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1);  l$ Z" e2 q& f: N% q" o' E( o
    Delay(1600);/ f; p& d/ T3 }5 D+ ~7 T+ R
9 y4 z; O+ I, f% p
  }
& c$ v1 s& |  T, B9 p7 l}- c! y6 i, ]! n# l
+ w: w9 g% \  k  V' D

" Y  i0 [" r6 M7 G* Z0 T: Z. E: o. E0 t2 F* w% l+ D1 J% I1 R
1 U: O, g$ c2 i) x( J
链接:https://pan.baidu.com/s/1c1UQa3m 密码:y9bk
' ?+ {; S2 A  U$ [5 c; t# j4 S
' A$ G( Y' s' N0 t# K% L
1 收藏 评论2 发布时间:2017-9-10 22:44

举报

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

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版