找回密码
 注册
关于网站域名变更的通知
查看: 158|回复: 3
打印 上一主题 下一主题

STC32G单片机编码器模式

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-21 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
有没人测试过STC32G单片机的编码器模式。2 g9 N5 P2 u8 S5 I6 H* s# V; R. r: E
1.例程 中 P1口选择P1.0 ,P1.2 ,STC32G 没有P1.2   。这么郁闷的事也有。
9 ~$ ~: ~2 H6 C# B8 X6 V2.换到P2 口也没反应。
- J4 D5 L  }$ ~+ p3.找到STC8H的编码器历程也不能用。
4 C0 n; f8 ^6 x1 p5 ?$ u; d8 E" S& B& t
下面是STC8H编码器模式历程:# w  ~3 u0 E0 A( g% K* }. h: a% _
#include "reg51.h"& t8 d& h5 g/ _+ B
#include "intrins.h") q9 J0 v' D+ M9 O7 H

1 T( ~, r; W; I; c. m7 s6 g& U6 R5 `typedef struct TIM1_struct2 W, T, b% S. A# K) N( F
{* C3 s3 i0 B; w" V! z
    volatile unsigned char CR1;     /*!< control register 1 */
: \) C& ]7 l% T, Z: ^4 ~+ E    volatile unsigned char CR2;     /*!< control register 2 */+ r4 H0 H7 G0 e. I; I
    volatile unsigned char SMCR;    /*!< Synchro mode control register */5 D4 i' U4 ]! V  ]
    volatile unsigned char ETR;     /*!< external trigger register */
; ]3 E0 J+ L8 k    volatile unsigned char IER;     /*!< interrupt enable register*/$ q1 q- u( b$ f$ F7 S. M
    volatile unsigned char SR1;     /*!< status register 1 *// Q7 K# {3 A8 i1 p
    volatile unsigned char SR2;     /*!< status register 2 */9 U# a( p3 w5 M5 [  ?( t0 ?
    volatile unsigned char EGR;     /*!< event generation register */# m8 C/ m4 {9 }5 I; R& Z
    volatile unsigned char CCMR1;   /*!< CC mode register 1 */
- E" W$ v8 I. |; {8 {3 \* d# e    volatile unsigned char CCMR2;   /*!< CC mode register 2 */
/ x& i# ^' c$ A2 M/ e    volatile unsigned char CCMR3;   /*!< CC mode register 3 */
8 w; P2 J& L- ^% @& d. r    volatile unsigned char CCMR4;   /*!< CC mode register 4 */
2 H! p* d* p/ V; o    volatile unsigned char CCER1;   /*!< CC enable register 1 */
6 {) w4 P- A1 B: r4 |* v1 ^4 L5 D( l    volatile unsigned char CCER2;   /*!< CC enable register 2 */1 O0 r& Z5 v- z# W
    volatile unsigned char CNTRH;   /*!< counter high */
* S( n  W! b2 i+ I    volatile unsigned char CNTRL;   /*!< counter low */# p3 p8 ]4 o, |- c# }' l4 g
    volatile unsigned char PSCRH;   /*!< prescaler high */1 i# v0 h9 }+ F! W- |0 Q9 [* b$ G6 ~
    volatile unsigned char PSCRL;   /*!< prescaler low */! n5 U2 e! t/ @5 w* ~- a5 y! q
    volatile unsigned char ARRH;    /*!< auto-reload register high */
8 T3 P, N7 C/ X# p: `    volatile unsigned char ARRL;    /*!< auto-reload register low */8 `+ _( q2 w+ Y
    volatile unsigned char RCR;     /*!< Repetition Counter register */
/ h& s8 t! q& i# z) V    volatile unsigned char CCR1H;   /*!< capture/compare register 1 high */
" v& ^7 ~! `: u( y    volatile unsigned char CCR1L;   /*!< capture/compare register 1 low */$ N+ W6 Y$ t4 G6 ?5 [( T1 V  v
    volatile unsigned char CCR2H;   /*!< capture/compare register 2 high */
# ], l( P5 u9 m5 o7 H/ _    volatile unsigned char CCR2L;   /*!< capture/compare register 2 low */; j& s" i5 H( G3 C  O1 O/ k
    volatile unsigned char CCR3H;   /*!< capture/compare register 3 high */
. r$ k/ J" D, U; Y& |$ I. Z, D    volatile unsigned char CCR3L;   /*!< capture/compare register 3 low */! c' u9 n+ v! c. v3 E
    volatile unsigned char CCR4H;   /*!< capture/compare register 3 high */
4 Z" y  v# B: \( P1 }    volatile unsigned char CCR4L;   /*!< capture/compare register 3 low */
6 k4 J+ O8 e: l, x+ [. K    volatile unsigned char BKR;     /*!< Break Register */' Y1 P6 e* `; Y9 V( E5 A1 W
    volatile unsigned char DTR;     /*!< dead-time register */  E3 @# U8 i3 k' Q* \0 U
    volatile unsigned char OISR;    /*!< Output idle register */+ p+ O! R6 L  F8 r6 D6 W3 q
}TIM1_TypeDef;& J' {/ b- i9 i" V+ x

2 M9 G. p6 u; N#define TIM1_BaseAddress    0xFEC0
) N0 {6 T, J+ T7 W+ q) a9 T7 L: w" _' R$ s
#define TIM1        ((TIM1_TypeDef xdata*)TIM1_BaseAddress)
# m" b8 {8 U  W+ [/ n1 S5 C2 i7 w5 a* `( H#define PWMA_ENO    (*(unsigned char volatile xdata *)0xFEB1)
1 s# N% N# Z% \7 t7 v5 z3 C+ v#define PWMA_PS     (*(unsigned char volatile xdata *)0xFEB2)
* x8 \4 d. B# V8 B$ v/ w) S1 N
3 _& j4 q# A" }' \7 Ssfr     P0M0    =   0x94;8 x* X7 `( f& `
sfr     P0M1    =   0x93;
8 {8 w6 j4 o% w  Y& ^sfr     P1M0    =   0x92;3 I; v) l# H! c% h; O$ n) d1 ?0 K
sfr     P1M1    =   0x91;
# y) ?! Q: r* p$ Q, W# gsfr     P_SW2   =   0xba;0 p" ?) a6 `4 v( N" N7 r
( D: ~9 X, v5 @" S4 ~8 d
sbit    P03     =   P0^3;, }- J' S1 W( D: Z# d! w0 G! I% s

' b. G# ~# E- e9 [unsigned char cnt_H, cnt_L;* O4 O: A5 {7 G' a: x( \
' ^3 ?- {: Z! B; R. C8 q% o$ I
void main(void)* _2 _7 `/ V% {0 g6 a
{
% k7 F, T$ p: R' u    P_SW2 = 0x80;
' U- z# d# G/ `7 t3 N) h
9 T( [& N* f, X) z/ y+ F9 }2 |    P1M1 = 0x0f;
! a4 a9 j2 \$ C    P1M0 = 0x00;
% q1 C/ M: Q( ]$ F+ _+ w# M) a/ {9 X
    PWMA_ENO = 0x00;                            //配置成TRGI 的pin需关掉ENO对应bit并配成input; W% V$ J9 v& v  V  `# x8 Q/ a
    PWMA_PS = 0x00;                             //00WM at P1+ `/ [3 ~+ [  S
) u# U4 v( B4 g& r
    TIM1-> PSCRH = 0x00;                        //预分频寄存器0 F+ t0 G/ {0 m5 }  r
    TIM1-> PSCRL = 0x00;
% U: a" A9 j, ~" g* }& B( P% E( [  j) \: y( x$ K* j/ e
    TIM1-> CCMR1  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟* m9 Q1 a2 {5 d7 p% m
    TIM1-> CCMR2  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟
% f: D$ Z0 p; m* y. ]/ ?5 H# g$ q' f" n2 K- ~/ y( w. p0 z
    TIM1-> SMCR   = 0x03;                       //编码器模式3
" @0 s" e& I9 t' M& G8 l
0 E% u9 y+ K1 q* m: a    TIM1-> CCER1  = 0x55;                       //配置通道使能和极性
$ `9 P9 _0 B8 J1 I    TIM1-> CCER2  = 0x55;                       //配置通道使能和极性
( X2 S* o7 O( x% L% M! i9 v5 X/ G" s
    TIM1-> IER  = 0x02;                         //使能中断. ~# K2 c/ I, v* U& r

& G2 n& s% K1 K. T    TIM1-> CR1 |= 0x01;                         //使能计数器2 [" e2 d5 O8 s1 D

9 c& R% j2 Q* `0 b5 B1 b. Q! J    EA = 1;7 p4 q1 q3 S+ o8 _4 L' F9 p- l
' h0 q! m& T, P2 y' s  k: X" F2 ?
    while (1);" N& g% W' H+ V2 Q7 N8 E' N( C4 e% o
}
5 r' I2 T2 O) y3 H) Z
( \2 k) _9 y  x7 ^8 m& M- G/******************** PWM中断读编码器计数值**************************/* S$ T8 t/ V: E# P" g3 }) E' q
void PWMA_ISR() interrupt 26
, S3 g3 f3 p( B; B+ k  Q{
# @7 Y% \! I1 {# o  w: I6 w    if (TIM1->SR1 & 0X02)3 N! X4 V2 w6 |7 t
    {
' p' T" j  ?% C        P03 = ~P03;4 E& X5 ^) N0 l; ]
        cnt_H = TIM1->CCR1H;  N) d. T1 Q9 r( N4 L
        cnt_L = TIM1->CCR1L;/ L# @2 M. k) B
        TIM1->SR1 &= ~0X02;
/ F% ~1 O0 K* y0 c& T; d/ O" m    }2 }% ^9 Y+ `- v# B6 m' `
}
% n- l; ^! e+ C# U% u

该用户从未签到

2#
发表于 2022-6-21 10:04 | 只看该作者
学习学习,||ヽ(* ̄▽ ̄*)ノミ|Ю

该用户从未签到

3#
发表于 2022-6-21 14:23 | 只看该作者
学习,||ヽ(* ̄▽ ̄*)ノミ|Ю

该用户从未签到

4#
发表于 2022-6-21 14:48 | 只看该作者
||ヽ(* ̄▽ ̄*)ノミ|Ю
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-29 13:44 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表