13742|3

5

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

SysTick的寄存器名定义和他的库函数是放在哪个文件夹里? [复制链接]

这是我写的程序,但是这里显示找不到库函数。后来我在网上找了答案,有人说库函数写进了核心文件里,但是我在主函数文件里编译了核心文件还是不行。如果我要用这种库函数的形式写应该怎么做?




#include"stm32f10x.h"
#include"core_cm3.h"
#define unsigned char uchar
void RCC_Configuration()
{
   ErrorStatus a;
   RCC_HSEConfig(RCC_HSE_ON);
   a=RCC_WaitForHSEStartUp();
    if(a==SUCCESS);
   {
     RCC_HCLKConfig(RCC_SYSCLK_Div1);
     RCC_PCLK1Config(RCC_HCLK_Div2);
     RCC_PCLK2Config(RCC_HCLK_Div1);
     FLASH_SetLatency(FLASH_Latency_2);
     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
     RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
     RCC_PLLCmd(ENABLE);
     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);
     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
     while(RCC_GetSYSCLKSource()!=0x08);
    }
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  }
  void GPIO_Configuration()
  {
    GPIO_InitTypeDef a;
    a.GPIO_Pin=GPIO_Pin_All;
    a.GPIO_Speed=GPIO_Speed_50MHz;
    a.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB,&a);
  }
  void SysTick_Configuration()
  {
    SysTick_CounterCmd(SysTick_Counter_Disable);
    SysTick_CLKSource(SysTick_HCLK_Div8);
    SysTick_CounterCmd(SysTick_Counter_Clear);
    SysTick_SetReload(9000000);
  }
   void Dealy_StsTick(uhar delay)
  {
    uchar i;
    for(i=0;i    {
      SysTick_CounterCmd(SysTick_Counter_Enable);
      while(SysTick_GteFlagStatus(SysTick_FLAGG_COUNT)==0);
      SysTick_CounterCmd(SysTick_Counter_Disable);
      SysTick_CounterCmd(SysTick_Counter_Clear);
    }
  }
int main(void)
{
    RCC_Configuration();
    GPIO_Configuration();
    while(1)
   {
      GPIO_WriteBits(GPIOB,GPIO_Pin_0,(BitAction)1-ReadOutputDataBit(GPIOB,GPIO_Pin_0));//¶ÁÈ¡µ±Ç°¶Ë¿ÚÖ¸£¬È»ºóÈ¡·´.
      Delay_SysTick(1);
    }
  }


然后就报错了。

compiling main.c...
..\User\main.c(34): warning:  #223-D: function "SysTick_CounterCmd" declared implicitly
..\User\main.c(34): error:  #20: identifier "SysTick_Counter_Disable" is undefined
..\User\main.c(35): warning:  #223-D: function "SysTick_CLKSource" declared implicitly
..\User\main.c(35): error:  #20: identifier "SysTick_HCLK_Div8" is undefined
..\User\main.c(36): error:  #20: identifier "SysTick_Counter_Clear" is undefined
..\User\main.c(37): warning:  #223-D: function "SysTick_SetReload" declared implicitly
..\User\main.c(39): error:  #20: identifier "uhar" is undefined
..\User\main.c(41): error:  #20: identifier "uchar" is undefined
..\User\main.c(44): warning:  #223-D: function "SysTick_CounterCmd" declared implicitly
..\User\main.c(44): error:  #20: identifier "SysTick_Counter_Enable" is undefined
..\User\main.c(45): warning:  #223-D: function "SysTick_GteFlagStatus" declared implicitly
..\User\main.c(45): error:  #20: identifier "SysTick_FLAGG_COUNT" is undefined
..\User\main.c(46): error:  #20: identifier "SysTick_Counter_Disable" is undefined
..\User\main.c(47): error:  #20: identifier "SysTick_Counter_Clear" is undefined
..\User\main.c(56): warning:  #223-D: function "GPIO_WriteBits" declared implicitly
..\User\main.c(56): warning:  #223-D: function "ReadOutputDataBit" declared implicitly
..\User\main.c(57): warning:  #223-D: function "Delay_SysTick" declared implicitly
Target not created


后来我又试着自己写了一个操作寄存器的程序(只有延时函数写的寄存器),但写完后他提示我说找不到寄存器名的定义。然后我就彻底不知道怎么办了。
#include"stm32f10x.h"
void SysTick_Init()
{
  SyaTick_>CTRL&=0xffff^0x0001<<0;
  SysTick_>CTRL&=0xffff^0x0001<<2;
}
void Delay_ms(u32 b)
{
  while(b*900>0xffffff);
  SysTick_>VAL=0;
  SysTick_>LOAD=b*900;
  SysTick_>CTRL|=1 ;
  while(SysTick_>CTRL&0x7fff==0);
  SyaTick_>CTRL&=0xffff^0x0001<<0;
}
void Delay_us(u32 b)
{
  while(b*9>0xffffff);
  SysTick_>VAL=0;
  SysTick_>LOAD=b*9;
  SysTick_>CTRL|=1;
  while(SysTick_>CTRL&0x7fff==0);
  SyaTick_>CTRL&=0xffff^0x0001<<0;
}
..\SYSTEM\Delay\delay.c(4): error:  #20: identifier "SyaTick_" is undefined
..\SYSTEM\Delay\delay.c(4): error:  #20: identifier "CTRL" is undefined
..\SYSTEM\Delay\delay.c(5): error:  #20: identifier "SysTick_" is undefined
..\SYSTEM\Delay\delay.c(10): error:  #20: identifier "SysTick_" is undefined
..\SYSTEM\Delay\delay.c(10): error:  #20: identifier "VAL" is undefined
..\SYSTEM\Delay\delay.c(11): error:  #20: identifier "LOAD" is undefined
..\SYSTEM\Delay\delay.c(12): error:  #20: identifier "CTRL" is undefined
..\SYSTEM\Delay\delay.c(14): error:  #20: identifier "SyaTick_" is undefined
..\SYSTEM\Delay\delay.c(19): error:  #20: identifier "SysTick_" is undefined
..\SYSTEM\Delay\delay.c(19): error:  #20: identifier "VAL" is undefined
..\SYSTEM\Delay\delay.c(20): error:  #20: identifier "LOAD" is undefined
..\SYSTEM\Delay\delay.c(21): error:  #20: identifier "CTRL" is undefined
..\SYSTEM\Delay\delay.c(23): error:  #20: identifier "SyaTick_" is undefined
我没有用视屏中的那个SYSTEM文件夹里的程序,想自己写。请各路大神告诉我解决方法~~最好是寄存器和库函数的方法都说一下。谢谢
此帖出自stm32/stm8论坛

最新回复

库函数的话,尽量使用ST的最新的库,以前的库有些可能和最新的不太兼容。 由于SysTick是标准M3内核所具有的,所以应该统一标准放在core_cm3.h中,我记得以前好像ST的外设库也有SysTick的相关函数,但最新的不一定有了,由于我对这个也不是太熟,所以说的不一定准确。 所以,你应该使用core_cm3.h中定义的SysTick相关函数,没有定义到的函数不要用。其相关函数不多,好像就两个。(先下个ST的外设库,里面有各种外设的详细例子,包括SysTick)。 从程序中也可以看出一些低级错误,所以C语言功底应该加强一下。  详情 回复 发表于 2013-10-7 14:16
点赞 关注
 

回复
举报

6040

帖子

203

TA的资源

版主

沙发
 
你的箭头写错了,应该是减号,而不是下划线
此帖出自stm32/stm8论坛

点评

哦,谢谢。真不好意思犯了这么低能的错误。以前写过一次寄存器。后来就一直没写过了。能告诉库函数那边怎么解决吗?  详情 回复 发表于 2013-10-7 13:21
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发lcofjp 的帖子

哦,谢谢。真不好意思犯了这么低能的错误。以前写过一次寄存器。后来就一直没写过了。能告诉库函数那边怎么解决吗?
此帖出自stm32/stm8论坛

点评

库函数的话,尽量使用ST的最新的库,以前的库有些可能和最新的不太兼容。 由于SysTick是标准M3内核所具有的,所以应该统一标准放在core_cm3.h中,我记得以前好像ST的外设库也有SysTick的相关函数,但最新的不一定有  详情 回复 发表于 2013-10-7 14:16
 
 

回复

6040

帖子

203

TA的资源

版主

4
 

回复 板凳天空之鱼5141 的帖子

库函数的话,尽量使用ST的最新的库,以前的库有些可能和最新的不太兼容。
由于SysTick是标准M3内核所具有的,所以应该统一标准放在core_cm3.h中,我记得以前好像ST的外设库也有SysTick的相关函数,但最新的不一定有了,由于我对这个也不是太熟,所以说的不一定准确。
所以,你应该使用core_cm3.h中定义的SysTick相关函数,没有定义到的函数不要用。其相关函数不多,好像就两个。(先下个ST的外设库,里面有各种外设的详细例子,包括SysTick)。
从程序中也可以看出一些低级错误,所以C语言功底应该加强一下。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表