本帖最后由 damiaa 于 2019-1-23 15:43 编辑 v! b$ o9 ~; x& q. h8 z$ Q4 ~7 r8 }6 o
- |4 S# ~& C; y1 {6 w3 F
【STM8-SO8-DISCO】+(2) EXIT做按键点灯4 A2 l& `7 S; ]* D
! n/ J1 Y1 o/ W* s/ x
目的:为了验证STM8S001的IO EXTI功能,做个实验就是按下键改变灯的状态。8 q3 x" B8 y! D& F8 Y
1,在上个项目【STM8-SO8-DISCO】+ 基本定时器四中点灯的基础上改写
! p$ B1 u4 k/ _, B9 K! S% H
8 b4 m& p. \/ Q {( u2,根据原理图和资料定义按键- #define USER_BUTTON_GPIO_PORT (GPIOC)2 Z$ {2 ]$ F( v! y
- #define USER_BUTTON_GPIO_PINS (GPIO_PIN_3) //这里可以设置为PC3,PC4,PC5中任何一个。
复制代码 3,定义一个EXIT的初始化函数:
5 y6 ], X+ t* H Z% k8 V- void Exit_Init()
4 ~# c% j6 p. G - {/ V E9 ], [& \4 L# ?3 A
- GPIO_Init(USER_BUTTON_GPIO_PORT, (USER_BUTTON_GPIO_PINS),GPIO_MODE_IN_FL_IT);//GPIO初始化
. ]& K* q4 F' T; F( b1 t+ N* g8 w8 f - /* Initialize the Interrupt sensitivity */
* C& [5 h0 J5 \3 H, I9 V - EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);//EXIT 外部中断触发设置下降沿触发
$ Q4 I+ D1 j7 U8 _: ~0 \6 ? - //EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY); stm8s001 没有最高外部中断IO PD7
& Q! S$ i+ T7 O6 u - enableInterrupts();
% u7 P- t6 j+ j0 K/ o/ S - }
复制代码
4 B9 Q% K0 S8 h$ \! d* _: @7 t4,中断里找到下面函数加入LED1_Toggle();
& z% B5 S! p9 q+ t- INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5)
* P0 q6 B$ x8 q7 g) [. i( {4 h - {: Y3 p, f6 g0 j& u) Y4 S
- /* In order to detect unexpected events during development,
; O9 r+ A" r9 l4 t - it is recommended to set a breakpoint on the following instruction.) a+ A& A& L1 t
- */
3 P7 F) L; e9 Q1 `" c - LED1_Toggle(); r% t$ _" I# T: B
- }
复制代码 5,注销到原来TIM4中断中的内容(避免效果不好)。
* y% f( E9 _0 n0 A1 B6 z- INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
, B- k z+ W8 W1 N' a0 C- D) F5 l - {
! r- ?0 l) \4 q3 G% o1 y - /* In order to detect unexpected events during development,% o0 ~/ `5 b B6 W G$ Z& s: K
- it is recommended to set a breakpoint on the following instruction.
- W C7 O! r7 m; V N - */
1 U8 A9 s7 T3 |7 ^- p4 m - // static uint16_t tims=0;
2 B; a4 a3 ^0 A4 E: Z3 D( B' b - // tims++; b2 n! ]' I) u1 a4 A/ P. |
- // if(tims >5000)8 ]" ^! h+ v# Z
- // {
" T- c( f! G6 w, ?& y - // tims =0;1 l' _, m6 T5 A [% s% ~# O( Y
- // LED1_Toggle();2 I$ t8 O: ?- o, [$ C4 C
- // }
, U# A' h9 G D( X - }
复制代码 4 x% {/ W5 `+ q
- h- k ~' m, J$ @ z
% p0 I7 B7 j) J6,编译调试试验。
: X K* n9 o- h r2 o$ \
" ^& S3 f. j# X, f& \( v
4 q E( `! z/ Q8 v" Z7 x7,代码/ M/ ?2 z# y0 G7 `7 N& D: W6 D
stm8s001test.zip
(4.37 MB, 下载次数: 6)
|