当前位置:   article > 正文

嵌入式系统开发,STM32使LED灯闪烁_嵌入式stm32奋斗板-led闪烁

嵌入式stm32奋斗板-led闪烁

目录

一、环境配置

一) 安装mdk5软件和stm32 pack

1.准备好安装mdk5软件和stm32包,资源链接如下

2.安装mdk5程序

3.安装stm32 pack文件

4.破解mdk5软件

 二) Mdk5的基础设置

  三) stm32简单程序编译(LED闪烁)

四)stm32仿真测试


一、环境配置

一) 安装mdk5软件和stm32 pack

1.准备好安装mdk5软件和stm32包

链接: 百度网盘 请输入提取码

提取码: 2a8j

2.安装mdk5程序

1)将资源下载解压后得到如下内容

双击点开 MDK524a.EXE应用程序,进入安装,点击Next

2.勾选 lagree to all the terms of the preceding License Agreement ,并点击Next

3.点击 Browse 选择安装路径后点击Next

4.例行的注册客户信息,不用管,随意输入姓名邮箱后点击Next

 5.点击安装

6.点击Finish结束安装。

3.安装stm32 pack文件

 1.点击解压出来的文件夹,点击支持包,选择需要的版本安装

2.安装完成

4.PoJie mdk5软件

1.解压 keygen_new2032.zip 文件,双击打开得到的 keygen_new2032.exe 应用程序

2.以管理员身份运行打开Keil uVision5,点击File--License Management.

3.复制CID,将其输入keygen_new2032.exe中的CID选项,Target选择ARM,点击Generate,得到一串代码

4.将得到的代码输入到New License ID Code(LIC)中,点击Add LIC,结束

 二) Mdk5的基础设置

为了之后编写代码时不会时不时受到麻烦,提前将程序设置好有利于代码编写

1.进入MDK5,点击Edit--Configuration… ,或者点击扳手图标,进入设置界面

 2.设置Encoding编码形式为Chinese GB2312(Simplified),即简体中文,防止从别处复制代码过来里面的中文形成乱码,Tab size设置为4

3.点击左上角配置目标选项,点击Debug,按照图示设置选项.最后点击Settings 

4.将port设置为JTAG,Reset设置为SYSRESETREQ,然后点击OK返回上一级,再点击OK返回

  三) stm32简单程序编译(LED闪烁)

 1.打开mdk5,新建一个工程

2.搜索STM32F103RB,选择后点击OK

3.选择相应选项, 点击OK,项目创建成功

4.工程创建成功后,点击新建文件,出现Text1, 将如下代码输入Text1文本框其中

  1. //宏定义,用于存放stm32寄存器映射
  2. #define PERIPH_BASE ((unsigned int)0x40000000)//AHB
  3. #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
  4. #define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
  5. //GPIOA_BASE=0x40000000+0x10000+0x0800=0x40010800,该地址为GPIOA的基地址
  6. #define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00)
  7. //GPIOB_BASE=0x40000000+0x10000+0x0C00=0x40010C00,该地址为GPIOB的基地址
  8. #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
  9. //GPIOC_BASE=0x40000000+0x10000+0x1000=0x40011000,该地址为GPIOC的基地址
  10. #define GPIOD_BASE (APB2PERIPH_BASE + 0x1400)
  11. //GPIOD_BASE=0x40000000+0x10000+0x1400=0x40011400,该地址为GPIOD的基地址
  12. #define GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
  13. //GPIOE_BASE=0x40000000+0x10000+0x0800=0x40011800,该地址为GPIOE的基地址
  14. #define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00)
  15. //GPIOF_BASE=0x40000000+0x10000+0x0800=0x40011C00,该地址为GPIOF的基地址
  16. #define GPIOG_BASE (APB2PERIPH_BASE + 0x2000)
  17. //GPIOG_BASE=0x40000000+0x10000+0x0800=0x40012000,该地址为GPIOG的基地址
  18. #define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C
  19. #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C
  20. #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C
  21. #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C
  22. #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C
  23. #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C
  24. #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C
  25. #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
  26. #define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
  27. #define LED0 MEM_ADDR(BITBAND(GPIOA_ODR_Addr,8))
  28. //#define LED0 *((volatile unsigned long *)(0x422101a0)) //PA8
  29. //定义typedef类型别名
  30. typedef struct
  31. {
  32. volatile unsigned int CR;
  33. volatile unsigned int CFGR;
  34. volatile unsigned int CIR;
  35. volatile unsigned int APB2RSTR;
  36. volatile unsigned int APB1RSTR;
  37. volatile unsigned int AHBENR;
  38. volatile unsigned int APB2ENR;
  39. volatile unsigned int APB1ENR;
  40. volatile unsigned int BDCR;
  41. volatile unsigned int CSR;
  42. } RCC_TypeDef;
  43. #define RCC ((RCC_TypeDef *)0x40021000)
  44. //定义typedef类型别名
  45. typedef struct
  46. {
  47. volatile unsigned int CRL;
  48. volatile unsigned int CRH;
  49. volatile unsigned int IDR;
  50. volatile unsigned int ODR;
  51. volatile unsigned int BSRR;
  52. volatile unsigned int BRR;
  53. volatile unsigned int LCKR;
  54. } GPIO_TypeDef;
  55. //GPIOA指向地址GPIOA_BASE,GPIOA_BASE地址存放的数据类型为GPIO_TypeDef
  56. #define GPIOA ((GPIO_TypeDef *)GPIOA_BASE)
  57. void LEDInit( void )
  58. {
  59. RCC->APB2ENR|=1<<2; //GPIOA 时钟开启
  60. GPIOA->CRH&=0XFFFFFFF0;
  61. GPIOA->CRH|=0X00000003;
  62. }
  63. //粗略延时
  64. void Delay_ms( volatile unsigned int t)
  65. {
  66. unsigned int i,n;
  67. for (n=0;n<t;n++)
  68. for (i=0;i<800;i++);
  69. }
  70. int main(void)
  71. {
  72. LEDInit();
  73. while (1)
  74. {
  75. LED0=0;//LED熄灭
  76. Delay_ms(500);//延时时间
  77. LED0=1;//LED亮
  78. Delay_ms(500);//延时时间
  79. }
  80. }

 5.点击左上角保存,文件名输入设置为main.c ,点击保存

6.右键点击 Source Group 1 ,然后点击 Add Existing Files to Group …(在工程下添加main.c文件)

7.选中刚刚保存的main.c文件,点击Add ,Source Group 1文件夹下就会多出main.c文件

8.点击右上角编译程序,下方显示0错误和0警告,即编译成功

四)stm32仿真测试

点击上方按钮或者ctrl F5开始调试

因为没有接入stm32硬件设备,所以先进行程序的编译和仿真测试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/565766
推荐阅读
相关标签
  

闽ICP备14008679号