完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1. 主函数 #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "timer.h" #include "key.h" int main(void) { u8 t; u32 v=100; STM32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化 LED_Init(); //初始化与LED连接的硬件接口 KEY_Init(); //初始化与按键连接的硬件接口 RCC->APB2ENR|=1<<2; //使能PORTA时钟 GPIOA->CRL&=0X0FFFFFFF; GPIOA->CRL|=0X30000000;//PA7推挽输出 GPIOA->ODR|=1<<7; //PA7 输出高 GPIOA->CRL&=0XFF0FFFFF;
GPIOA->CRL|=0X00300000;//PA5推挽输出 GPIOA->ODR|=1<<5; //PA5 输出高 LED1=1; LED0=1; while(1) { t=KEY_Scan(0); //得到键值 switch(t) { case KEY0_PRES: v=v+10; 2. LED初始化 #include "sys.h" #include "led.h" void LED_Init(void) { RCC->APB2ENR|=1<<2; //使能PORTA时钟 RCC->APB2ENR|=1<<5; //使能PORTD时钟 GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000003;//PA8 推挽输出 GPIOA->ODR|=1<<8; //PA8 输出高 GPIOD->CRL&=0XFFFFF0FF; } GPIOD->CRL|=0X00000300;//PD.2推挽输出 GPIOD->ODR|=0x0004; //PD.2输出高 3. 按键初始化 #include "key.h" #include "delay.h" void KEY_Init(void) { RCC->APB2ENR|=1<<2; //使能PORTA时钟 RCC->APB2ENR|=1<<4; //使能PORTC时钟 JTAG_Set(SWD_ENABLE); //关闭JTAG,开启SWD GPIOA->CRL&=0XFFFFFFF0; //PA0设置成输入 GPIOA->CRL|=0X00000008; GPIOA->CRH&=0X0FFFFFFF; //PA15设置成输入 GPIOA->CRH|=0X80000000; GPIOA->ODR|=1<<15; //PA15上拉,PA0默认下拉 GPIOC->CRL&=0XFF0FFFFF; //PC5设置成输入 GPIOC->CRL|=0X00800000; GPIOC->ODR|=1<<5; //PC5上拉 } u8 KEY_Scan(u8 mode) key_up=0; if(KEY0==0)return KEY0_PRES; else if(KEY1==0)return KEY1_PRES; else if(WK_UP==1)return WKUP_PRES; }else if(KEY0==1&&KEY1==1&&WK_UP==0) key_up=1; return 0;// 无按键按下 } 4. 定时器初始化 #include "timer.h" #include "led.h" u32 i=0; //定时器3中断服务程序 void TIM3_IRQHandler(void) { if(TIM3->SR&0X0001)//溢出中断 { //GPIOA->ODR^=0x0100; GPIOA->ODR^=0x0080; LED0=!LED0; } TIM3->SR&=~(1<<0);//清除中断标志位 } void TIM3_Int_Init(u16 arr,u16 psc) { RCC->APB1ENR|=1<<1; //TIM3时钟使能 TIM3->ARR=arr; //设定计数器自动重装值 TIM3->PSC=psc; //预分频器设置 TIM3->DIER|=1<<0; //允许更新中断 //TIM3->CR1|=0x01; //使能定时器3 MY_NVIC_Init(3,3,TIM3_IRQn,2);//抢占3,子优先级3,组2 |
|
相关推荐
1 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
579 浏览 1 评论
794 浏览 0 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
614 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1413 浏览 2 评论
1634 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 15:35 , Processed in 0.756459 second(s), Total 42, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号