Keil MDK自带神器,Configuration

来源:互联网 发布:mysql有没有查询分析器 编辑:程序博客网 时间:2024/05/16 04:58


学习单片机或ARM的同学可能都有这样的困惑 ,每次用到单片机的GPIO,SPI,定时器时我们都要反复配置内部寄存器。那么有没有一个这样的工具,当我们每次需要一个外设的时候,只需简单勾选的操作就可以生成所需配置的代码 ?答案是肯定的 ,keil内部集成了一个非常实用的插件Configuration Wizard,它可以通过勾选的方式快速配置我们的初始化代码 ,下面的例子基于stm32_init.c如图:
 

通过勾选我们完成了定时器3内部触发的配置,这样我们只需在main函数中调用一次stm32_Init();函数就可以了,是不是很简单!
1.    Stm32_Init.c的使用方法
只需打开在Keil中打开Stm32_Init.c文件在窗口左下角选择Configuration Wizard即可弹出上图所示菜单。
 

2.    如何编写自己的配置代码
点击帮助可获得Configuration Wizard的使用帮助
 
 






可以看到,编写配置文件只需按照具体的格式即可,如下示例程序:
// <<< Use Configuration Wizard in Context Menu >>>
.
…….
// System Timer配置
//  System Timer时钟源选择
//  缺省值: SYSTICKCLK = HCLK/8
//                    <0=> SYSTICKCLK = HCLK/8
//                    <1=> SYSTICKCLK = HCLK
//  SYSTICK period [ms] <1-1000:10>
//  设置timer period for System Timer.
//  缺省值: 1  (1ms)
//  System Timer中断允许
//
#define __SYSTICK_SETUP           0
#define __SYSTICK_CTRL_VAL        0x00000006
#define __SYSTICK_PERIOD          0x0000000A
….
……….
// <<< end of configuration section >>>
…………
#if __SYSTICK_SETUP
 
__inline static void stm32_SysTickSetup (void)
{
 
#if ( (__SYSTICK_PERIOD * (__SYSTICKCLK / 1000) - 1) > 0xFFFFFF)   //reload value to large
#error "Reload Value to large! Please use 'HCLK/8' as System Timer clock source or smaller period"
#else
       SysTick->LOAD = __SYSTICK_PERIOD * (__SYSTICKCLK / 1000) - 1; //设置 reload 寄存器
       SysTick->CTRL = __SYSTICK_CTRL_VAL;//设置 clock source and中断允许
 
       SysTick->VAL = 0;//clear  the counter
       SysTick->CTRL |= SYSTICK_CSR_ENABLE;//允许the counter
#endif
} //end of stm32_SysTickSetup
#endif
……………..
void stm32_Init( )
{
 
……………..
#if __SYSTICK_SETUP
              stm32_SysTickSetup ();
#endif
……………..
} //end of stm32_Init
从上面我们可以看出,Configuration Wizard只是对部分宏定义进行了初始化,并不是特别复杂,而初始化函数只是给据编译条件生成不同的代码。
部分语句介绍:(《》应为<>)
《h》《/h》成对出现,出现一个展开选项
《e?》《/e》成对出现,出现一个勾选框
《e1》若勾选,下方第1个宏定义置一
《e2.3》  若勾选,下方第2个宏定义第3位置一
《o.2.3..4》出现一个下拉菜单,下方第2个宏定义第三第四位等于所选值
 




《i》提示信息
《/s》字符串初始化
3.    扩展
基本功能介绍完了,有兴趣的朋友可以编写自己的配置文件,应用于不同处理器,也可以编写自己的配置代码,通过勾选的方式生成不同的功能模块,具体方法可参照帮助文件,感谢某网友提供的中文版stm32_init.c文件。STM32工程模板已上传,欢迎下载,欢迎交流!
http://pan.baidu.com/s/1dD46oEH


原创粉丝点击