microchip 代理贝能的sam d51(LQFP100PIN)与LAN9253 电机控制开发板使用总结
microchip 代理贝能的sam d51(LQFP100PIN)与LAN9253 电机控制开发板使用总结(3)3.4 板子相关外设配置3.4.1 板子MCU硬件 的LAN9253连接接口3.4.2 MCU TCC–PWM 电机控制
PIN40–PC10–PWM0H
PIN41–PC11–PWM0L
PIN42–PC12–PWM1H
PIN43–PC13–PWM1L
PIN44–PC14–PWM2H
PIN45–PC15–PWM2L
Timer/Counter for Control applications (TCC) peripheral
3.4.2.1 应用调用例子
/* Register callback function for period event */
TCC0_PWMCallbackRegister(TCC_PeriodEventHandler, (uintptr_t)NULL);
/* Read the period */
period = TCC0_PWM24bitPeriodGet();
/* Start PWM*/
TCC0_PWMStart();
/***************************************
* Check PWM outputs on pins
* Channel 0 PWMH - PC04
* Channel 0 PWML - PD11
* Channel 1 PWMH - PD08
* Channel 1 PWML - PB17
* Channel 2 PWMH - PB14
* Channel 2 PWML - PC22
***************************************/
/* Duty cycle increment value */
#define DUTY_INCREMENT (10U)
/* Save PWM period */
uint32_t period;
/* This function is called after TCC period event */
void TCC_PeriodEventHandler(uint32_t status, uintptr_t context)
3.4.3 MCU ADC–IA/IB/IC
15 PB08 IA
16 PB09 IB
97 PB00 IC 3.4.4 MCU GPIO–网卡指示灯
74 PA24 RJLED2
75 PA25 RJLED1
3.4.4.1 应用调用例子
/*** Macros for LED pin ***/
#define RJLED2_Set() (PORT_REGS->GROUP.PORT_OUTSET = ((uint32_t)1U << 24U))
#define RJLED2_Clear() (PORT_REGS->GROUP.PORT_OUTCLR = ((uint32_t)1U << 24U))
#define RJLED2_Toggle() (PORT_REGS->GROUP.PORT_OUTTGL = ((uint32_t)1U << 24U))
#define RJLED2_OutputEnable() (PORT_REGS->GROUP.PORT_DIRSET = ((uint32_t)1U << 24U))
#define RJLED2_InputEnable() (PORT_REGS->GROUP.PORT_DIRCLR = ((uint32_t)1U << 24U))
#define RJLED2_Get() (((PORT_REGS->GROUP.PORT_IN >> 24U)) & 0x01U)
#define RJLED2_PIN PORT_PIN_PA24
#define RJLED1Set() (PORT_REGS->GROUP.PORT_OUTSET = ((uint32_t)1U << 25U))
#define RJLED1_Clear() (PORT_REGS->GROUP.PORT_OUTCLR = ((uint32_t)1U << 25U))
#define RJLED1_Toggle() (PORT_REGS->GROUP.PORT_OUTTGL = ((uint32_t)1U << 25U))
#define RJLED1_OutputEnable() (PORT_REGS->GROUP.PORT_DIRSET = ((uint32_t)1U << 25U))
#define RJLED1_InputEnable() (PORT_REGS->GROUP.PORT_DIRCLR = ((uint32_t)1U << 25U))
#define RJLED1_Get() (((PORT_REGS->GROUP.PORT_IN >> 25U)) & 0x01U)
#define RJLED1_PIN PORT_PIN_PA25
3.4.5 MCU EIC–KEY S1
按键中断
69 PB21 KEY1
默认1,按下按键0 3.4.5.1 应用调用例子
EIC_CallbackRegister(EIC_PIN_5,EIC_User_Handler, 0);
static void EIC_User_Handler(uintptr_t context)
{
// LED_Toggle();
SERCOM0_USART_Write("EIC is ok!", sizeof"EIC is ok!");
}
3.4.5.2 板子没有复位按键,使用另外按键进行复位
static void EIC_User_Handler(uintptr_t context)
{
// LED_Toggle();
SERCOM0_USART_Write("EIC is ok!", sizeof"EIC is ok!");
NVIC_SystemReset();
}
3.4.6 MCU key EIC -->evsys–>led tog
按键按下EIC中断,在中断处理函数中进行控制LED TOG.
那么是否有更好或者其他的方式呢?
按键按下,EIC输出到ev sys,ev sys直接进行控制LED TOG,不需要CPU参与。
当然也可以实现按键按下,产生EIC中断输出,在中断处理函数中进行控制LED TOG.
也同时可以EIC事件输出,ev sys直接进行控制LED TOG,不需要CPU参与。
页:
[1]