打印

3.5库stm32的systick就是出不来,帮忙看下程序吧

[复制链接]
7301|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
按照help文档上的例子来写的,可是怎么都不成功,卡在delay里死循环出不来。求调试成功过的帮忙看下 module version 3.5.zip (3.69 MB)
沙发
李富贵| | 2011-12-12 19:18 | 只看该作者
中断处理函数的名字都能写错,真是太有才了。
整个程序就是不断的delay、delay、delay…… STM32都让你给糟蹋了。

研究下RTOS吧,比你的写法高效多了。

使用特权

评论回复
板凳
shuishuo615|  楼主 | 2011-12-12 19:36 | 只看该作者
2# 李富贵

谢谢楼上老师,可是程序也没有报错,我也没有想到问题会出在这么简单的地方,实在是……浪费了很多时间都没有找到原因,太感谢了!!

操作系统比较多ucos,rtos,linux,学哪个好呢?

使用特权

评论回复
地板
李富贵| | 2011-12-12 19:39 | 只看该作者
ucos的教材很丰富,可以从它入手。
实际项目我用freertos,消耗资源少,更适合STM32。
另外,编译器不要用MDK,要用IAR,编译效率高不说,还支持ucos、freertos等多种RTOS。

使用特权

评论回复
5
shuishuo615|  楼主 | 2011-12-12 20:01 | 只看该作者
4# 李富贵

恩,谢谢,简介明了的介绍。之前硬件做的比较多,软件写的比较少,下阶段要加强了

使用特权

评论回复
6
无冕之王| | 2011-12-12 22:38 | 只看该作者
还是建议把程序贴出来,更加方便讨论

使用特权

评论回复
7
李富贵| | 2011-12-12 23:32 | 只看该作者
还是建议把程序贴出来,更加方便讨论
无冕之王 发表于 2011-12-12 22:38

你视网膜脱落了吧。

使用特权

评论回复
8
shuishuo615|  楼主 | 2011-12-16 17:24 | 只看该作者
6# 无冕之王
两楼已经帮我解决了,我烦了低级错误,不易察觉

使用特权

评论回复
9
whlcsu| | 2012-3-7 11:24 | 只看该作者
1# shuishuo615

请教LZ,我用3.5的库函数去配置SysTick,为什么编译找不到那些库函数呢?


本想下载您上传的代码学习下,无奈总是下载失败。。。

使用特权

评论回复
10
whlcsu| | 2012-3-7 11:26 | 只看该作者
同时请教各位大侠,我用3.5的库函数去配置SysTick,为什么编译找不到那些库函数呢?


求教。。。

使用特权

评论回复
11
kaflash| | 2012-3-7 16:00 | 只看该作者
同时请教各位大侠,我用3.5的库函数去配置SysTick,为什么编译找不到那些库函数呢?
https://bbs.21ic.com/images/default/attachimg.gif https://bbs.21ic.com/attachments/month_1203/120307112449ea1ea9da6d08ed.pn ...
whlcsu 发表于 2012-3-7 11:26

头上加上这个
#include "stm32f10x_systick.h"

使用特权

评论回复
12
whlcsu| | 2012-3-7 20:54 | 只看该作者
11# kaflash

#include "stm32f10x_systick.h"是Keil自带的吧?而且显示的Version是2.0.1。
我试过将这个头文件加入工程中,但是编译发现和ST 3.5的库有诸多冲突。

其实在ST 3.5的库中,文件misc.c中实现了SysTick的一个库函数,即void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)。我就比较纳闷了,为什么其它库函数ST没有去实现呢?

现在的想法是将stm32f10x_systick.c中库函数实现Copy到misc.c中去。。。

可否,等待验证。。。

使用特权

评论回复
13
李富贵| | 2012-3-7 22:23 | 只看该作者
3.x固件库的systick配置在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 */
}


因为systick、NVIC这些东西是arm公司设计的m3内核的一个组成部分,所以从3.0版本的固件库引入CMSIS以后,ST不再提供这部分的固件库,而是由arm公司提供的CMSIS库负责。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

66

帖子

0

粉丝