完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以下是一些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); } ``` 希望这些示例代码对你有所帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
8996 浏览 16 评论
4051 浏览 18 评论
1109浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1858浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 05:13 , Processed in 0.974286 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号