野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3617|回复: 1

STM32_LED点亮学习与课后作业

[复制链接]
发表于 2023-3-2 23:21:30 | 显示全部楼层 |阅读模式

  1. #if 0  //注释的意思

  2. #include <reg52.h>

  3. sbit LED=P0^0;

  4. void main(void)
  5. {
  6.     P0=0xfe;//总线操作
  7.     LED=0;
  8. }

  9. #endif


  10. #include "DELAY.H"
  11. #include "STM32F10X.H"//实现寄存器映射

  12. int main()
  13. {
  14. #if 0
  15.    
  16.     //直接寻址点亮LED灯并通过delay函数实现延时
  17.    
  18.     int i=0;

  19.     //打开GIOP端口的时钟
  20.     *(unsigned int * )0x40021018 |= ((1)<<3);
  21.    
  22.     //配置IO口为输出 (CRL 寄存器)
  23.     *(unsigned int * )0x40010C00 |= ((1)<<(4*0));
  24.    
  25.     for(i=0;i<20;i++)
  26.     {
  27.         //控制 ODR 寄存器
  28.         *(unsigned int * )0x40010C0C &= ~(1<<0);
  29.         delay();
  30.         *(unsigned int * )0x40010C0C |= (1<<0);
  31.         delay();
  32.     }
  33. #elseif 0

  34.     //操作RCC_APB2ENR CRL ODR 实现LED灯的点亮

  35.     //打开GPIOB端口的时钟
  36.     RCC_APB2ENR |= ((1)<<3);
  37.    
  38.     //配置IO口为推挽输出 (CRL 寄存器)
  39.     GPIOB_CRL &= ~((0x0f)<<(4*0));//把CRL寄存器低四位(每四位CRL控制相应端口的某一位)的值初始化为零,防止复位值0100B的出现
  40.     GPIOB_CRL |= ((1)<<(4*0));//把初始化后的CRL寄存器低四位赋值为0001B
  41.    
  42.     //设置 ODR 寄存器的最低位为0
  43.     GPIOB_ODR &= ~(1<<0);
  44.    
  45. #endif
  46.    
  47. #if 0
  48.    
  49.     //通过操作BSRR实现LED灯的点亮
  50.    
  51.     //打开GPIOB端口的时钟
  52.     RCC_APB2ENR |= ((1)<<3);
  53.    
  54.     //配置IO口为推挽输出 (CRL 寄存器)
  55.     GPIOB_CRL &= ~((0x0f)<<(4*0));//把CRL寄存器低四位(CRL每四位控制相应端口的某一位)的值初始化为零,防止CRL复位值0100B的出现
  56.     GPIOB_CRL |= ((1)<<(4*0));//把初始化后的CRL寄存器低四位赋值为0001B
  57.    
  58.     //设置 BSRR 寄存器的最低位为0
  59.     GPIOB_BSRR &= ~(1<<0);
  60.    
  61. #endif

  62. #if 1
  63.    
  64.     //通过操作BRR实现LED灯的点亮
  65.    
  66.     //打开GPIOB端口的时钟
  67.     RCC_APB2ENR |= ((1)<<3);
  68.    
  69.     //配置IO口为推挽输出 (CRL 寄存器)
  70.     GPIOB_CRL &= ~((0x0f)<<(4*0));//把CRL寄存器低四位(CRL每四位控制相应端口的某一位)的值初始化为零,防止CRL复位值0100B的出现
  71.     GPIOB_CRL |= ((1)<<(4*0));//把初始化后的CRL寄存器低四位赋值为0001B

  72.     //设置 BRR 寄存器的最低位为1,会将对应的ODR位变成0
  73.     GPIOB_BRR |= (1<<0);
  74.    
  75. #endif

  76. }

  77. void SystemInit (void)
  78. {
  79.     //目的是骗过编译器不报错
  80. }
复制代码




回复

使用道具 举报

发表于 2023-3-6 08:42:00 | 显示全部楼层
可以,慢慢就可以掌握原理了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-15 13:31 , Processed in 0.024988 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表