初级会员
- 积分
- 54
- 金钱
- 54
- 注册时间
- 2011-5-10
- 在线时间
- 0 小时
|
前几天想用库函数写程序,查看的了较老版本的固件库用户手册,里面介绍了有关SysTick几个函数,
SysTick_CLKSourceConfig//定义时钟源的
SysTick_SetReload//设置SysTick重装载值
SysTick_CounterCmd//使能或者失能SysTick计数器
SysTick_ITConfig//使能或者失能SysTick中断
SysTick_GetCounter//获取SysTick计数器的值
SysTick_GetFlagStatus//检查指定的SysTick标志位设置与否
貌似很好用,我就试着编了延时函数,可是老提示我这几个函数没有定义(我的库是从st官网上下的最新的),后来才发现新库里面这几个函数都没有了,仅在core_cm3.h里找到了这个函数
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */
SysTick->VAL = 0; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}
只有一个参数,好像还要使用中断,调了半天没有调出来,后来果断用了原子哥的操作寄存器的程序,结果立马出来了,还不用中断,感觉用库有利有弊啊,在程序中库函数和寄存器结合使用还是比较合适的。
说了一大堆没什么重点,刚开始学习,说的肯定有错误之处,还请大家批评指正,共同学习。 |
|