基于keil的在线仿真 1)安装keil
官网链接: http://www2.keil.com/mdk5
安装教程自己在网上可以找到
2)安装华大ide包
官网链接: www.hdsc.com.cn/Category82-1425?All=1
安装教程:双击IDE运行包,然后一直往下操作
注意:如果是自己找的包,或者是某宝给的,使用这种包flash download 里边可能会找不到华大芯片的类型,加也加不进去。所以还是建议使用官方的。
3)连接板子,下好驱动
使用的是st-link,st-link在keil安装目录下有,一般是安装目录\ARM\STLink ,里边有个exe程序,运行然后device connect(就按着程序提示一直装),装好之后打开电脑->属性->设备管理器,就能看到有个STM32 stlink的,说明装好了。
4)下载
打开keil,然后打开点灯的例程(如果是自己找的SDK,记得要核对芯片的型号是否是自己板子的类型)
魔术棒->debug->stlink debugger 然后按setting
正常情况下是SW device 有显示地址 ,debug adapter 有显示正确内容 flash download有显示芯片型号
如果SW device 没显示,说明没识别到芯片(我之前用的jlink识别不到,就换了个stlink,暂时没想到别的方法可以解决)
如果flash download 没有对应的芯片,点add自己加进去,如果add的列表没有芯片的型号,要么自己把flm文件给放到对应的flash文件夹,要么就重新装ide包。(都不行的话就没办法了)
点击 rebuild(两个向下箭头的图标)编译,没问题的话,就点旁边的download,最后点击一个带d的放大镜图标进入调试,点击run就可以看到板子上的灯在闪
如果下载成功灯没闪的话,要么是硬件的问题,要么是程序的问题。
程序的问题,需要翻原理图,看代码对应的端口是否是连接到led的那个端口
硬件的问题,电路连接是否正确,仿真器是否能正确识别
制作出来的实物图如下:
单片机源程序如下:
- /******************************************************************************
- * Include files
- ******************************************************************************/
- #include "gpio.h"
- /******************************************************************************
- * Local pre-processor symbols/macros ('#define')
- ******************************************************************************/
- /******************************************************************************
- * Global variable definitions (declared in header file with 'extern')
- ******************************************************************************/
- /******************************************************************************
- * Local type definitions ('typedef')
- ******************************************************************************/
- /******************************************************************************
- * Local function prototypes ('static')
- ******************************************************************************/
- /******************************************************************************
- * Local variable definitions ('static') *
- ******************************************************************************/
- /******************************************************************************
- * Local pre-processor symbols/macros ('#define')
- ******************************************************************************/
- /*****************************************************************************
- * Function implementation - global ('extern') and local ('static')
- ******************************************************************************/
- static void App_LedInit(void);
- /**
- ******************************************************************************
- ** \brief Main function of project
- **
- ** \return uint32_t return value, if needed
- **
- ** This sample
- **
- ******************************************************************************/
- int32_t main(void)
- {
- ///< LED端口初始化
- App_LedInit();
- while(1)
- {
- ///< LED点亮
- Gpio_SetIO(EVB_LEDR_PORT, EVB_LEDR_PIN);
- delay1ms(1000);
- ///< LED关闭
- Gpio_ClrIO(EVB_LEDR_PORT, EVB_LEDR_PIN);
- delay1ms(1000);
- }
- }
- static void App_LedInit(void)
- {
- stc_gpio_cfg_t stcGpioCfg;
-
- ///< 打开GPIO外设时钟门控
- Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
-
- ///< 端口方向配置->输出(其它参数与以上(输入)配置参数一致)
- stcGpioCfg.enDir = GpioDirOut;
- ///< 端口上下拉配置->下拉
- stcGpioCfg.enPu = GpioPuDisable;
- stcGpioCfg.enPd = GpioPdEnable;
-
- ///< LED关闭
- Gpio_ClrIO(EVB_LEDR_PORT, EVB_LEDR_PIN);
-
- ///< GPIO IO LED端口初始化
- Gpio_Init(EVB_LEDR_PORT, EVB_LEDR_PIN, &stcGpioCfg);
-
- }
- /******************************************************************************
- * EOF (not truncated)
- ******************************************************************************/
复制代码
所有资料51hei提供下载:
gpio_output.zip
(254.86 KB, 下载次数: 21)
|