OpenEdv-开源电子网

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

用库函数的中断,替换开发板的中断函数,出现问题了。

[复制链接]

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
发表于 2012-10-6 21:45:54 | 显示全部楼层 |阅读模式

原子:我把usart_init()函数内的函数MY_NVIC_Init()函数(绿色背景部分)该为使用库函数(天蓝色部分),编译,出现下面的情况:

 

……………………………………
#include <stm32f10x_nvic.c>
……………………………………
……………………………………


 #ifdef EN_USART1_RX
 NVIC_InitTypeDef NVIC_InitStructure;
#endif

void uart_init(u32 pclk2,u32 bound)
{   
 float temp;
 u16 mantissa;
 u16 fraction;   
 temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
 mantissa=temp;     //得到整数部分
 fraction=(temp-mantissa)*16; //得到小数部分 
    mantissa<<=4;
 mantissa+=fraction;
 RCC->APB2ENR|=1<<2;   //使能PORTA口时钟 
 RCC->APB2ENR|=1<<14;  //使能串口时钟
 GPIOA->CRH&=0XFFFFF00F;
 GPIOA->CRH|=0X000008B0;//IO状态设置
   
 RCC->APB2RSTR|=1<<14;   //复位串口1
 RCC->APB2RSTR&=~(1<<14);//停止复位       
 //波特率设置
  USART1->BRR=mantissa; // 波特率设置 
 USART1->CR1|=0X200C;  //1位停止,无校验位.
#ifdef EN_USART1_RX    //如果使能了接收
 //使能接收中断
 USART1->CR1|=1<<8;    //PE中断使能
 USART1->CR1|=1<<5;    //接收缓冲区非空中断使能      
// MY_NVIC_Init(3,3,USART1_IRQChannel,2);//组2,最低优先级
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
 
#endif
}

请问上面的问题出错在哪里了?
另外,我试图添加库函数的cortexm3_macro.s文件,错误变了。
而且我在原子的开发板上,直接添加“#include <stm32f10x_nvic.c>”(其他没有改变),也出现同样的问题,请问是为什么啊?

http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2012-10-7 00:10:23 | 显示全部楼层
其他的库没用过,只用过V3.5的库,V3.5引入stm32f10x.h不会有问题。这个我们经常做。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-10-7 11:25:39 | 显示全部楼层
添加#include <stm32f10x_nvic.c>,把这个文件拷贝在路径内,就会出现库函数的汇编代码没定义的错误.
求高手解决一下啊.
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-7-23
在线时间
0 小时
发表于 2012-10-7 18:45:08 | 显示全部楼层
你用的不是固件库V3.5吧,MDK3.8自带ST的固件库好像只有include文件,没source文件。。。。

我猜想一个可能的错误:
  1#include <stm32f10x_nvic.c>应改为 #include <stm32f10x_nvic.h>,因为NVIC_InitTypeDef原型在头文件里定义的。  
一入技术,苦海无边。。。
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-10-7 18:58:11 | 显示全部楼层
回复【4楼】songhere:
你用的不是固件库V3.5吧,MDK3.8自带ST的固件库好像只有include文件,没source文件。。。。 我猜想一个可能的错误:   1#include <stm32f10x_nvic.c>应改为 #include <stm32f10x_nvic.h>,因为NVIC_InitTypeDef原型在头文件里定义的。   
---------------------------------
我也试验过添加nvic.h会出现NVIC_Init()函数没有定义的错误~!
很麻烦啊,NVIC~!

难道要升级库吗?库函数下载了3.5的,怎么操作啊?
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-10-7 21:58:23 | 显示全部楼层
哈哈,高手教我了,解决了:
1.在keil工程的左边“Project Workspace” 的“Source Group 1”点击右键,下拉至“Manage Components” ,弹出对话框“Components,Enviroment and Books”
2.在“Project Components”的“File” 栏“Add Files”选择一个文件,这个文件在:/keil/ARM/RV31/LIB/ST/STM32F10xR.LIB。(文件类型选“All file (*.*)”)。点击Add。就OK了。
哈哈。编译不再出错了。哈哈哈哈哈哈哈哈 
按上面的操作,把实验三的UART_INIT()函数的中断函数改用库函数,效果和原子的开发板代码的效果完全一样。呵呵
而且添加了上面的一个.LIB,NVIC.C都可以去掉。 
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-10-8 00:27:05 | 显示全部楼层
回复【6楼】moline:
---------------------------------
这种是用lib库.好处就是编译快,坏处就是不知道函数到底干了啥...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-10-10 20:18:32 | 显示全部楼层
要是不用.lib库,添加NVIC.C就会出错。要是不添加.lib,怎么办呢?还有其他办法可以避免nvic.c内的汇编库函数没定义的问题吗?
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 06:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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