历史上的今天
今天是:2024年10月08日(星期二)
2018年10月08日 | STM32F103ZEGPIO口的配置以流水灯为例
2018-10-08 来源:eefocus
设置步骤:
1.使能外设时钟如PA,PB,PE.
2.设置成所需状态。这里是推挽输出 50Khz速率
3.设置输出状态,是高电平还是低电平。可用ODR,BSRR,BSR均可设置。
代码如下:
#include “stm32f10x.h”
extern void Stm32_Clock_Init(u8 PLL);
void delay(u32 t)//简单延时函数,减计数
{
for(;t>0;t--);
}
void XYDRCC_DeInit(void) //复位时钟函数,一般可省略不写
{
RCC->APB1RSTR = 0x00000000;//复位APB1外设复位寄存器
RCC->APB2RSTR = 0x00000000; //复位APB2外设复位寄存器
RCC->AHBENR = 0x00000014; //使能睡眠模式闪存和SRAM时钟,其他关闭
RCC->APB1ENR = 0x00000000; //APB1外设时钟关闭
RCC->APB2ENR = 0x00000000; //APB2外设时钟关闭
RCC->CR |= 0x00000001; //内部高速时钟使能 HSION置1
RCC->CFGR &= 0xF8FF0000;
//复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]
RCC->CR &= 0xFEF6FFFF; //复位HSEON,CSSON,PLLON
RCC->CR &= 0xFFFBFFFF; //复位HSEBYP
RCC->CFGR &= 0xFF80FFFF; //复位PLLSRC,PLLXTPRE,PLLMUL[3:0],USEPRE
RCC->CIR = 0x00000000; //关闭所有中断
}
void Stm32_Clock_Init(u8 PLL)//倍频后,把PLL作为系统时钟
{
unsigned char temp=0;
XYDRCC_DeInit();
RCC->CR|=0x00010000;// 外部高数时钟使能 HSEON置1
while(!(RCC->CR&0x01<<17));//等待外部时钟就绪
RCC->CFGR=0X00000400;//APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2;//111表示9,PLL-2
RCC->CFGR|=PLL<<18;//设置为9倍
RCC->CFGR|=1<<16;//PLLSRC ON
FLASH->ACR|=0x32;//FLASH2个延时周期
RCC->CR|=0x01000000;//PLLON
while(!(RCC->CR&0x01<<25));//等待PLL锁定
RCC->CFGR|=0x00000002;//PLL作为系统时钟
while(temp!=0x02) //等待PLL作为系统时钟,设置成功
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
}
int main()
{
Stm32_Clock_Init(9);
RCC->APB2ENR=(1<<2)|(1<<3)|(1<<6);//使能PA,PB,PE时钟
GPIOA->CRL&=~(0xf<<(4*5));//复位PA5
GPIOA->CRL|=0x03<<(4*5);//PA5配置成推挽输出,50Mhz速率
GPIOA->CRL&=~(0xf<<(4*6));//复位PA6
GPIOA->CRL|=0x03<<(4*6);//PA6配置成推挽输出,50Mhz速率
GPIOB->CRL&=~(0xf<<(4*5));//复位PB5
GPIOB->CRL|=0x03<<(4*5);//PB5配置成推挽输出,50Mhz速率
GPIOE->CRL&=~(0xf<<(4*5));//复位PE5
GPIOE->CRL|=0x03<<(4*5);//PE5配置成推挽输出,50Mhz速率
while(1)
{
GPIOB->BSRR=1<<(5+16);//PB5输出低电平
delay(6553600);
GPIOB->BSRR=1<<(5);//PB5输出高电平
GPIOE->BSRR=1<<(5+16);//PE5输出低电平
delay(6553600);
GPIOE->BSRR=1<<(5);//PE5输出高电平
GPIOA->BSRR=1<<(5+16);//PA5输出低电平
delay(6553600);
GPIOA->BSRR=1<<(5);//PA5输出高电平
GPIOA->BSRR=1<<(6+16);//PA6输出低电平
delay(6553600);
GPIOA->BSRR=1<<(6);//PA6输出高电平
}
}
上一篇:STM32注释风格
史海拾趣
|
第一节: 心情和时钟 说实话我能够使用的单片机不多,我总是以为无论什么单片机都能开发出好的产品。 前些年用51,总是向各位大大学习,无休止的索取,在网上狂览一通。心里感激的同时也想奉献一些,可是我会什么? ...… 查看全部问答> |
|
/*********************LED实验*********************************/ // 公司名称 :保定飞凌嵌入式技术有限公司 // 描 述 :跑马灯 #define GPFCON (*(volatile unsigned *)0x56000050) #define GPFDAT (*(volatile unsigned *)0x ...… 查看全部问答> |
|
我是大四的一名学生,我是自动化专业,想毕业可从事嵌入式系统这方面的工作,感觉自己智商不高,不敢搞应用程序的开发,因为涉及到许多算法等等.所以现在我想学习驱动编程,我只在书上看了一些WIN CE的基本驱动的结构, 书上说先看看PLATFORM BUILDER中的 ...… 查看全部问答> |
|
EZ430-RF2500已经进行了快两个月了,整理完了才感觉大家好像是在一个办公室里完成的任务,基本上没有多少重复帖的,都在完成自己的小模块,最后完成EZ430-RF2500这个大模块。前一段时间大家在一直讨论板子试 ...… 查看全部问答> |




