设置步骤:
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注释风格
下一篇:stm32普通IO口模拟iic时序
推荐阅读最新更新时间:2024-03-16 16:15