OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6241|回复: 3

SysTick的寄存器名定义和他的库函数是放在哪个文件夹里?在这里卡了4天了。

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-10-6
在线时间
0 小时
发表于 2013-10-6 23:14:18 | 显示全部楼层 |阅读模式

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

 

#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<delay;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);
   }
 }

然后就报错了。


 


 


后来我又试着自己写了一个操作寄存器的程序(只有延时函数写的寄存器),但写完后他提示我说找不到寄存器名的定义。然后我就彻底不知道怎么办了。
#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文件夹里的程序,想自己写。请各路大神告诉我解决方法~~最好是寄存器和库函数的方法都说一下。谢谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-10-6
在线时间
0 小时
 楼主| 发表于 2013-10-6 23:40:29 | 显示全部楼层
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-10-7 09:39:34 | 显示全部楼层
回复【楼主位】天空之鱼5141:
---------------------------------
systick的寄存器在core_cm3.h文件中有定义
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-10-6
在线时间
0 小时
 楼主| 发表于 2013-10-7 13:28:05 | 显示全部楼层
回复【3楼】xiaoyan:
---------------------------------
呃。。。那个文件里的代码有点看不懂,好像他就是定义了一个枚举,和几个宏定义。其他具体的运作过程不太清楚。我已经把core_m3.h在main文件里面编译了。但还是会报错。能告诉我具体怎么做吗?谢谢。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-12 10:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表