你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
00-405686 发表于 2016-5-14 11:29 看下手册:SysTick_Config(uint32_t ticks); 该函数设置了自动重载入计数器(LOAD)的值,SysTick IRQ的优先 ...
yugong 发表于 2016-5-14 12:54 SysTick_Config(uint32_t ticks);在core_cm3.h中,但core_cm3.h文件在V2.0版本后没有了,我是想问在高版 ...
00-405686 发表于 2016-5-14 13:37 还有,你看下V2.0移植到V3.0,而且V2.0没有core_cm3.h,V3.0后面才有吧
yugong 发表于 2016-5-14 19:03 以下是我测试公共的代码,我没有配置NVIC_SetPriority (SysTick_IRQn, (1CTRL |= SysTick_Counter_Enable ...
00-405686 发表于 2016-5-16 08:56 你这用的是那个库,可以上传工程文件吗?
Stm32ADTest.zip
2016-5-16 19:40 上传
点击文件名下载附件
1.76 MB, 下载次数: 3, 下载积分: ST金币 -1
yugong 发表于 2016-5-16 19:40 文件包在附件,请帮我看看,谢谢。
该函数设置了自动重载入计数器(LOAD)的值,SysTick IRQ的优先级,复位了计数器(VAL)的值,开始计数并打开SysTick IRQ中断。SysTick时钟默认使用系统时钟。
SysTick_Config(uint32_t ticks);在core_cm3.h中,但core_cm3.h文件在V2.0版本后没有了,我是想问在高版本的库中怎么配置,谢谢
还有,你看下V2.0移植到V3.0,而且V2.0没有core_cm3.h,V3.0后面才有吧
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
_STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
{
return (1UL); /* Reload value impossible */
}
SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
SysTick->VAL = 0UL; /* 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 (0UL); /* Function successful */
}
以下是我测试公共的代码,我没有配置NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);但是测试却成功了,请问是什么原因,谢谢
int main (void)
{
rcc_config (); // .\config.c
nvic_config (); // .\config.c
gpio_config (); // .\config.c
usart_config (); // .\config.c
systick_config (); // .\config.c
while (1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_6);
if(upload_cnt<=5)
{GPIO_SetBits(GPIOB, GPIO_Pin_5);
USART_SendData (USART1, upload_cnt);
while ( USART_GetFlagStatus (USART1, USART_FLAG_TXE) == FALSE );}
else if(upload_cnt<=10)
{GPIO_ResetBits(GPIOB, GPIO_Pin_5);}
else
{upload_cnt=0;}
}
}
void my_systick_IRQHandler (void) // ¶¨Ê±Æ÷ÖжϷþÎñ³ÌÐò
{
upload_cnt++; // ¶¨Ê±Æ÷¼ÆÊý±äÁ¿¼ÓÒ»
//adc_event = TRUE;
}
void systick_config (void)
{
SysTick_CLKSourceConfig (SysTick_CLKSource_HCLK_Div8); // 8·ÖƵ£º8M * 9 /8 = 9M
//NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
SysTick_SetReload (9000); // 1ms
SysTick_ITConfig (ENABLE); // ´ò¿ªSystickÖжÏ
SysTick_CounterCmd(SysTick_Counter_Enable); // ʹÄÜSystick
}
void SysTick_CLKSourceConfig(u32 SysTick_CLKSource)
{
/* Check the parameters */
assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
{
SysTick->CTRL |= SysTick_CLKSource_HCLK;
}
else
{
SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
}
}
void SysTick_SetReload(u32 Reload)
{
/* Check the parameters */
assert_param(IS_SYSTICK_RELOAD(Reload));
SysTick->LOAD = Reload;
}
void SysTick_ITConfig(FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
SysTick->CTRL |= CTRL_TICKINT_Set;
}
else
{
SysTick->CTRL &= CTRL_TICKINT_Reset;
}
}
void SysTick_CounterCmd(u32 SysTick_Counter)
{
/* Check the parameters */
assert_param(IS_SYSTICK_COUNTER(SysTick_Counter));
if (SysTick_Counter == SysTick_Counter_Enable)
{
SysTick->CTRL |= SysTick_Counter_Enable;
}
else if (SysTick_Counter == SysTick_Counter_Disable)
{
SysTick->CTRL &= SysTick_Counter_Disable;
}
else /* SysTick_Counter == SysTick_Counter_Clear */
{
SysTick->VAL = SysTick_Counter_Clear;
}
}
你这用的是那个库,可以上传工程文件吗?
文件包在附件,请帮我看看,谢谢。
Stm32ADTest.zip
2016-5-16 19:40 上传
点击文件名下载附件
下载积分: ST金币 -11.76 MB, 下载次数: 3, 下载积分: ST金币 -1
你这个是以前的V2.0的库,现在V3.0的库没有cortexm3_macro、stm32f10x_vector文件的这个才是V3.5的库的工程文件