打印
[STM32F1]

IAR寄存器方式开发stm32--中断函数问题

[复制链接]
2821|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyc613|  楼主 | 2015-2-3 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lyc613 于 2015-2-3 11:56 编辑

iar for arm 6.3
详情请查看附件示例.查询接收没有问题
只是想接收中断而已.尝试过很多方法都不对.求指教
在iar for arm里写stm32的中断函数格式怎么写
精简后的程序 STM32F103C8-PKT Uart1中断接收.rar (13.59 KB)
沙发
lyc613|  楼主 | 2015-2-3 11:00 | 只看该作者
自顶一楼

使用特权

评论回复
板凳
戈卫东| | 2015-2-3 11:38 | 只看该作者
首先你的工程里要有那个startup_stm32f10x_md.s,然后你在这个文件里面找到你要的中断函数名字,一般的,它是“void USART1_IRQHandler(void)”,然后你用这个名字自己定义一个函数就可以了。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
lyc613 + 3
地板
戈卫东| | 2015-2-3 11:46 | 只看该作者
嗯不要忘了设置相应的中断控制。。。。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
lyc613 + 3
5
lyc613|  楼主 | 2015-2-3 11:53 | 只看该作者
戈卫东 发表于 2015-2-3 11:38
首先你的工程里要有那个startup_stm32f10x_md.s,然后你在这个文件里面找到你要的中断函数名字,一般的,它 ...

我add进去后.编译 会提示 找不到 SystemInit
然后我把我的系统开始初始化函数名称改成了 SystemInit .无错误了. 按照你说的方法建立了一个void USART1_IRQHandler(void)函数. 但是程序还是不会进入这个中断函数.
我把程序无用的去掉.您再看下.

使用特权

评论回复
6
lyc613|  楼主 | 2015-2-3 11:56 | 只看该作者
戈卫东 发表于 2015-2-3 11:46
嗯不要忘了设置相应的中断控制。。。。

已更新了lz位

使用特权

评论回复
7
戈卫东| | 2015-2-3 13:54 | 只看该作者
2015-0203-t1.rar (536.76 KB)
看看我的吧。
103VE,程序在RAM调试。
---------
你的103C8应该是MD不是LD吧?
还有尽量不要把可执行代码放到“.h”文件里面。。。。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
lyc613 + 3
8
lyc613|  楼主 | 2015-2-3 14:13 | 只看该作者
戈卫东 发表于 2015-2-3 13:54
看看我的吧。
103VE,程序在RAM调试。
---------

嗯 .谢谢你:handshake

使用特权

评论回复
9
戈卫东| | 2015-2-3 14:33 | 只看该作者
你的程序好像是缺少NVIC里面USART1的中断使能

使用特权

评论回复
10
mohanwei| | 2015-2-3 21:50 | 只看该作者
到厂家网站下载个外设驱动库,解压,里面有各种各样的工程模板……挑一个,改名,加入你自己的文件就好了

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
lyc613 + 1
11
lyc613|  楼主 | 2015-2-4 09:06 | 只看该作者
戈卫东 发表于 2015-2-3 14:33
你的程序好像是缺少NVIC里面USART1的中断使能

后来放弃了 iostm32f10xxb头文件...  里面有些关于nvic的寄存器没有找到..不知怎么搞的
然后就用st的官方头文件来写了.

使用特权

评论回复
12
lyc613|  楼主 | 2015-2-4 09:07 | 只看该作者
mohanwei 发表于 2015-2-3 21:50
到厂家网站下载个外设驱动库,解压,里面有各种各样的工程模板……挑一个,改名,加入你自己的文件就好了 ...

IAR for arm 自带的例程里面都没有用自家的 ios头文件 用的库函数.而我目前不想用库函数

使用特权

评论回复
13
mohanwei| | 2015-2-4 10:35 | 只看该作者
lyc613 发表于 2015-2-4 09:07
IAR for arm 自带的例程里面都没有用自家的 ios头文件 用的库函数.而我目前不想用库函数 ...

你拿一个库函数版的,改成直接配置寄存器看看,能否省1字节?最大的可能是code和ram用的更多……
编译器已经自动把各种表达式、宏、四则运算、简单的函数调用合并成直接赋值了,绝对比你自己琢磨的还高效得多。
而且从维护的角度看,库函数就像小白文,谁都能看;天书一样的寄存器只能用来装13、给自己添麻烦和给别人设门槛
就算你记下了几百个寄存器,换一个MCU呢:lol

使用特权

评论回复
14
lyc613|  楼主 | 2015-2-5 08:56 | 只看该作者
mohanwei 发表于 2015-2-4 10:35
你拿一个库函数版的,改成直接配置寄存器看看,能否省1字节?最大的可能是code和ram用的更多……
编译器 ...

嗯  我当然知道库函数的优势 也是未来开发的趋势
但是
1 我记不住哇..我记一条句子顶我记10个寄存器
2 拿不准,没有亲身操作 总感觉不够靠谱
3 换cpu是很慎重的选择 哪有那么多时间换来换去

使用特权

评论回复
15
Liang118038| | 2017-3-2 18:23 | 只看该作者
本帖最后由 Liang118038 于 2017-3-2 18:34 编辑

13楼挺装B的,官方库函数写得烂又不是少人骂的,一直忽悠初学的小白死记硬背那又长又臭的库函数真是够了,稍微看过stm32f10x.h都知道寄存器的定义明显比那烂库清晰明了多了去

使用特权

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

本版积分规则

4

主题

61

帖子

0

粉丝