本帖最后由 xld0932 于 2019-10-19 17:24 编辑

1.准备工件

1.1.Keil MDK开发环境
1.2.到官网上下载对应芯片(MM32SPIN05PF)的底层驱动程序MM32SPIN0x_q_Lib_Samples_V1.04_SC
1.3.在Keil  MDK中安装对芯片的支持包,如下图所示:
1.png 2.png


2.新建工程

2.1.打开Keil软件,点击菜单栏Project->New uVision Project...在弹出的窗口中输入工程名,点击保存;

3.png

2.2.选择相对应的芯片:MM32SPIN05PF

4.png

2.3.直接点击OK,一个空的工程就建立完成了;

5.png

2.4.点击File Extensions, Books and Enveronment...按键,在弹出的Manage Project Items的Project Items的选项卡中添加文件夹、程序源文件到工程中;
6.png

2.5.添加完成后的目录结构和程序源文件如下图所示:
7.png

2.6.点击Options for Target...按键,在弹出的对话框中,对项目工程进行配置工作,如果程序中有用到printf函数,请勾选Use MicroLIB;
8.png

2.7.在C/C++选项卡中录入USE_STDPERIPH_DRIVER预编译宏,录入Include Paths的相关包含文件路径;
9.png

2.8.项目工程的文件包含路径添加如下图所示:
10.png

2.9.在Debug选项卡中,选择使用J-LINK / J-TRACE Cortex工具,然后点击Settings,如果有弹窗,选择ARM Cortex-M0即可;
11.png

2.10.在弹出的Cortex JLink/JTrace Target Driver Setup对话框中的Debug选项卡中,将调试接口设置为SW模式,即可在SW Device中检测到芯片了;
12.png

2.11.在Flash Download选项卡中,设置如下图所示;至此整个工程的创建和配置就完成了。
13.png


3.测试程序

根据原理图的绘制,编写LED闪烁的控制程序,代码如下所示:

<font size="3">#define __MAIN__
  • #include "main.h"
  • volatile uint32_t SysDelayCnt = 0;
  • /**
  • *LD1 ---> PA11
  • *LD2 ---> PA12
  • */
  • #define LD1_ON()        GPIO_ResetBits(GPIOA, GPIO_Pin_11)
  • #define LD1_OFF()       GPIO_SetBits(  GPIOA, GPIO_Pin_11)
  • #define LD1_TOGGLE()    (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_11))?(GPIO_ResetBits(GPIOA, GPIO_Pin_11)):(GPIO_SetBits(GPIOA, GPIO_Pin_11))
  • #define LD2_ON()        GPIO_ResetBits(GPIOA, GPIO_Pin_12)
  • #define LD2_OFF()       GPIO_SetBits(  GPIOA, GPIO_Pin_12)
  • #define LD2_TOGGLE()    (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_12))?(GPIO_ResetBits(GPIOA, GPIO_Pin_12)):(GPIO_SetBits(GPIOA, GPIO_Pin_12))
  • void LED_Init(void)
  • {
  •     GPIO_InitTypeDef GPIO_InitStructure;
  •     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
  •     GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_11 | GPIO_Pin_12;
  •     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  •     GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  •     GPIO_Init(GPIOA, &GPIO_InitStructure);
  •     LD1_OFF(); LD2_OFF();
  • }
  • void InitSysTick(void)
  • {
  •     if(SysTick_Config(SystemCoreClock / 1000))
  •     {
  •         while (1);  /* Capture error */
  •     }
  •     /* Configure the SysTick handler priority */
  •     NVIC_SetPriority(SysTick_IRQn, 0x0);
  • }
  • void delay(uint32_t cnt)
  • {
  •     SysDelayCnt = cnt;
  •     while(SysDelayCnt != 0);
  • }
  • int main(void)
  • {
  •     InitSysTick();
  •     LED_Init();
  •     while(1)
  •     {
  •         LD1_OFF();
  •         LD2_OFF();
  •         delay(500);     //---500ms
  •         LD1_ON();
  •         LD2_ON();
  •         delay(500);     //---500ms
  •     }
  • }
  • void SysTick_Handler(void)
  • {
  •     if(SysDelayCnt) SysDelayCnt--;
  • }
  • </font>
  • 复制代码
    <font size="3">#ifndef __MAIN_H__
  • #define __MAIN_H__
  • #undef  EXTERN
  • #ifdef  __MAIN_C__
  • #define EXTERN
  • #else
  • #define EXTERN extern
  • #endif
  • #include "HAL_conf.h"
  • #endif
  • </font>
  • 复制代码


    4.相关资源

    4.1.程序代码: Project.rar (2.12 MB, 下载次数: 5)
    交流单片机MCU、处理器、ARM技术、DSP,以及嵌入式系统硬件与软件的平台
    • 帖子 5177
    • 回复 5698
    大家都在看的技术资料
    举报
    内容系网友发布,其中涉及到安全隐患的内容系网友个人行为,不代表面包板社区观点
    请点击举报理由
    关闭 站长推荐上一条 /3 下一条
    • 返回顶部