单片机学习小组
直播中

刘秀英

7年用户 1331经验值
私信 关注

有没有M453寄存器编程的例子?

有没有M453寄存器编程的例子?望能提供一个,参考学习学习

回帖(1)

刘丰标

2024-5-23 17:34:03
以下是一些M453寄存器编程示例:

1. 设置GPIO输出
```c
#include "M453.h"
int main()
{
    GPIO_SetMode(PC, BIT0, GPIO_MODE_OUTPUT);  //将PC0设置为输出模式
    while(1)
    {
        PC0=1;  //PC0管脚输出高电平
        Delay(1000);  //延时1s
        PC0=0;  //PC0管脚输出低电平
        Delay(1000);  //延时1s
    }
}
```

2. 设置外部中断
```c
#include "M453.h"
void EINT0_IRQHandler(void)
{
    PA0=PA0^1;  //PA0管脚翻转输出
    Delay(100);
    EINT0->EINTSRC &= ~BIT0;  //清除EINT0中断标志
}
int main()
{
    GPIO_SetMode(PA, BIT0, GPIO_MODE_INPUT);  //将PA0设置为输入模式
    GPIO_EnableEINT0(PA, 0, GPIO_INT_FALLING);  //配置EINT0中断在PA0管脚下降沿触发
    NVIC_EnableIRQ(EINT0_IRQn);  //使能EINT0中断
    while(1);
}
```

3. 设置定时器输出PWM波形
```c
#include "M453.h"
#define CCR2_InitCnt (480-1)
#define CCR2_DutyCyc (CCR2_InitCnt/2)
#define CCR3_InitCnt (480-1)
#define CCR3_DutyCyc (CCR3_InitCnt/4)
void TMR0_IRQHandler(void)
{
    if (TIMER_GetIntFlag(TIMER0) == 1)
    {
        TIMER_ClearIntFlag(TIMER0);
    }
}
int main()
{
    PWM_ConfigOutputChannel(PA, BIT2, 1000, 50);  //将PA2设置为PWM输出模式,频率为1000Hz,占空比为50%
    PWM_EnableOutput(PWM0, PWM_CH_2_MASK);  //使能PWM输出通道2
    TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 1000);  //将TIMER0设置为自动重载模式,1ms重载
    TIMER_EnableCapture(TIMER0, TIMER_CH2);  //TIMER0捕获CH2转换结果
    TIMER_EnableCapture(TIMER0, TIMER_CH3);  //TIMER0捕获CH3转换结果
    TIMER_SET_CMP_VALUE(TIMER0, TIMER_CH2, CCR2_InitCnt);  //将TCMPR2寄存器设置为CCR2_InitCnt
    TIMER_SET_CMP_VALUE(TIMER0, TIMER_CH3, CCR3_InitCnt);  //将TCMPR3寄存器设置为CCR3_InitCnt
    TIMER_Start(TIMER0);  //启动TIMER0
    NVIC_EnableIRQ(TMR0_IRQn);  //使能TIMER0中断
    while(1);
}
```

希望这些示例代码对你有所帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分