
新建完工程后当然是点亮led,,这个可是单片机界hello world。 查看数据手册(感谢谷歌翻译)后得之,stm8会自动采用内部16M晶振,并八分频后作为系统时钟, G* X+ S0 a1 y% A 1 ![]() 所以先不用配置时钟,直接关注gpio就行了,在查看gpio相关寄存器之前,先拷贝一份简介 1。 gpio简介 通用输入/输出端口用于芯片与芯片之间的数据传输外部I / O端口最多可以包含8个引脚。 每个引脚可以单独使用编程为数字输入或数字输出。 另外,一些端口可能有备用功能如模拟输入,外部中断,片上外设的输入/输出。 只要一个备用功能可以一次映射到一个引脚。一个输出数据寄存器,输入数据存器,数据方向寄存器和两个配置寄存器与每个端口相关联。 特定端口将作为输入或输出取决于端口的数据方向寄存器的状态。+ C& m* _* u/ [* n5 t 通过上面的简介可以使我们简单的了解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 数据输出寄存器,从高到低每位对应每个引脚的输出值 */ IDR; /*!< Input Data Register 数据输入寄存器,从高到低每位对应每个引脚的输出值*/ DDR; /*!< Data Direction Register 数据输入输出寄存器,从高到低每位对应每个引脚的数据输入输出模式(0为输入,1为输出)*/1 d6 Z/ E/ v2 ` CR1; /*!< Configuration Register 1 数据输入输出IO配置寄存器1, 可以配置输入的上拉,输出推挽等状态*/ CR2; /*!< Configuration Register 2 数据输入输出IO配置寄存器2,配置输入中断和输出速度 */: n- T! r0 v9 w B ; Z1 c: C( p0 t3 R; Z+ K 2.实例 . m0 v X' t$ A) ^ W l: J" D ![]() . S1 I- \' ?% w; q 从原理图上看led0 和l led1阴极分别连接到PC0和PC1上,所以我要把PC0和PC1设置为输出模式,推挽模式,速度不需要太快设置成2m就可以 这是寄存器版的 void 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 GPIOC->DDR |= 0x03; //配置PC0 PC1为输出模式4 r; l$ W5 M0 y7 }7 I, S* P GPIOC->CR1 |= 0x03; //配置PC0 PC1为推挽模式) R# o* x& i0 B' i: n GPIOC->CR2 &= 0xfc; //配置PC0 PC1输出速度2m # H" R" _6 }* A/ f 8 U; d1 w, I. r! c& G: g# m6 C /* Infinite loop */ while (1) { 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 } }' L6 e# A& U" M2 D3 G ) }. j Z/ G0 J 这个是库函数版的 void main(void) {! C% y6 e( v4 E. u: \0 { % ]/ b# I& K; l: j6 a& W; ? //init led0 led1 GPIO_Init(GPIOC, GPIO_Pin_0 | GPIO_Pin_1, GPIO_Mode_Out_PP_High_Slow);; {- d' `- w3 E3 j8 n% Y2 e* } /* Infinite loop */ while (1) { GPIO_ToggleBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1); Delay(1600);: V3 d c! | J, M# Y* @! @ } } ! Z. |) A) P0 k& u ! N ?; w- h9 I4 O0 J 链接:https://pan.baidu.com/s/1c1UQa3m 密码:y9bk |
你这写,也太累了。 |
写的不错,加油 |