首页 > 编程知识 正文

proteus控制八个LED灯,lm324应用电路图

时间:2023-05-03 08:09:52 阅读:108275 作者:158

#手撕STM32寄存器:Proteus仿真电路 LED灯的寄存器配置的详细说明

CPU:STM32F103

功能:点亮、点亮、点亮PB9寄存器:

实现: Keil Proteus仿真

#一、电路图

##二、Keil中的main.c 代码

# define time0x9fffvoiddelayms (unsigned int count ) ) for ); 出局了!=0; count--; }intmain(void ) (* ) unsignedint* ) )0x40021000 0x18 )|=(13 ); 启用GPIOB端口时钟*(unsignedint* ) (0X40010C00 0x04 )|=() ) (4*(9-8) )//Pb9置于推挽输出中,输出速度为10m * (uuu ) //PB9=0,while(1) {*(unsignedint* ) ) 0X40010C000x0C ) ) (~) 19 ); //PB9=0,点亮Delayms(time ); *(unsignedint* () 0X40010C000x0C )|=) 19; //PB9=1,熄灭延迟ms (time ); }//这是寄存器地址编程voidsysteminit(void ); //系统时钟初始化函数,此处为空,曾欺骗编译器以免出现错误} ###二、寄存器配置的详细说明

/*

控制IO输出的高电平通常需要三个步骤:配置三个寄存器(为寄存器赋值)。

1 .打开端口时钟: RCC_APB2ENR |=(1n ); 打开GPIOn端口时钟

设置GPIO输出模式和输出速度:配置GPIOx_CRL或GPIOx_CRH寄存器

3 .输出高/低电平:构成GPIO_ODR寄存器或GOIOB_BSRR,以及GPIOB_BRR

*/

/*说明:每个外围设备都有“块”外围设备地址。 @2.3请参照内存映像表1:指示各外围设备的“开始地址”

各外围设备有很多寄存器,各寄存器Reg被分配了固定的地址(4Byte=32bits )

该寄存器Reg地址=该寄存器所在的外围设备的起始地址(该寄存器)偏移地址

外围设备的起始地址===2.3存储器映像表1

该寄存器Reg的偏移地址====各章外围设备手册: @ 3@ 27,例如@7.3 RCC寄存器—7.3.7 APB2外围设备时钟使能寄存器RCC _ AP B2 ENR—RCC

注意: GPIO中的每个端口(PA、PB、…、PG )具有不同的外围设备起始地址,但每个端口(PA、PB、…、PG )有七个功能完全类似的寄存器。

因此,各端口(PA、PB、…、PG )的7个寄存器的偏移地址相同

*/

/*寄存器设定/代入的步骤(1)从查找表中获取寄存器的地址=(有寄存器的)外围设备的起始地址)寄存器的偏置地址

)调查该寄存器结构,明确分配的值

(3) ) unsigned int ) ) (寄存器的地址)=代入

*/

/

#define Time0x9ffff

无符号输入计数) )。

{

for (; 出局了!=0; 计数;

}

输入主(语音) )。

{

/*配置第一步(RCC寄存器--- APB2外部时钟使能寄存器) RCC_APB2ENR ) )启用GPIOB端口的时钟)1)查阅表, 该寄存器地址外部地址) @2.3存储器图像表1 )复位和时钟控制) RCC ) )的起始地址:0x4002 1000寄存器偏移地址: @7.3 RCC寄存器--7.3 C_APB2ENR的偏移地址:0x18寄存器地址=外部设备的起始地址(寄存器)偏移地址=RCC 20000x18(2)参考该寄存器结构明确分配的值:启用GPIOx端口(unsigned int* ) )寄存器的地址)=赋值:启用GPIOB端口的时钟3360* ) (unsigned int* ) )。 启用GPIOB端口时钟/*第二步:配置GPIOx端口n引脚:设置GPIO输出模式和输出速度:配置GPIOx_CRL或GPIOx_CRH寄存器目的:推挽输出PB9,输出速度为10M PBn的情况下”GPIOB_crh(1)的gpiob_CRH寄存器的地址=GPIOB的开头地址CRH寄存器的偏移地址表1 ) gpiob的开头地址=0X4001 0C00; @8.2.2端口配置高寄存器(GPIOx_CRH ) x=A.E )的偏移地址=0x04 GPIOB_CRH寄存器的地址=0x40010c00x04 )2)参考此寄存器配置并显式=0001:即|=(() () ) ) ) ) )1) )1) )1) )1) )1) ) uunsii */*(unsignedint* ) (0X40010C00 0x04 ) | 将//PB9配置为推挽输出,输出速度为10M /*第三步:配置GPIOx端口n端输出的高/低电平: GPIOx_ODR寄存器或GOIOx_BSRR, GPIOx_BRR的目的:点亮构成Pb9输出低电平的LED1的方法: GPIOB_ODR寄存器(1) GPIOB_ODR寄存器的地址=GPIOB的起始地址ODR寄存器的偏移地址表1 ) @8.2.4端口输出数据寄存器(GPIOx_ODR ) x=A.E )的偏移地址=0x0C GPIOB_ODR寄存器的地址=0x40010c00x0c )2)参照该寄存器结构) unsignedint* ) )寄存器的地址)=赋值: *(unsignedint* ) (0X40010C00 0x0C ) ) ) 19 ); */*(unsignedint* )0x40010c0c=~~(19 ); while(1) (*(unsignedint* ) ) 0X40010C000x0C ) ) () () 19 ); 延迟ms (time; *(unsignedint* () 0X40010C000x0C )|=) 19; 延迟ms (time; //这是寄存器地址编程

语音系统(语音)。

{

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。