你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于串口波特率 & EXTI的问题

[复制链接]
_ilikerome_ 提问时间:2015-2-4 17:44 /
悬赏8ST金币未解决
问题如下
1、如下图,串口波特率计算这里,为什么计算DIV_Fraction时,需要把小数*16啊?以前我就按部就班这么做了,原因一直没想清楚。
波特率.JPG
2、STM32 的外部中断 0~4 都有单独的中断服务函数,但是外部中断 5~9、10~15都是共用一个,比如,void EXTI9_5_IRQHandler(void),
那么怎么区分到底是哪个中断啊?

收藏 评论9 发布时间:2015-2-4 17:44

举报

9个回答
埃斯提爱慕 回答时间:2015-2-4 20:08:43
提示: 作者被禁止或删除 内容自动屏蔽
damiaa 回答时间:2015-2-4 20:20:14
1,UART有个专用定时器产生波特率。应该是72M的1/16具体可以看看手册。2,中断公用可以根据标志判断是哪个中断。这个问题不大。
_ilikerome_ 回答时间:2015-2-5 11:45:02
dsjsjf 发表于 2015-2-4 20:08
1、16进制的取小数部分,所以除以16(分母乘以16);
2、可以判断相应IO口状态,(好像也可以通过 ITStatus  ...

汗,这个是中断,判断端口没用的吧。
netlhx 回答时间:2015-2-5 11:49:28
本帖最后由 netlhx 于 2015-2-5 12:07 编辑

1. 这个是UART以16倍速采样信息,能减少误差,硬件实现的,按部就班就好
2. 需要在中断函数里面检测中断源,根据中断源执行相应操作,具体可以检测EXTI->PR寄存器来判断
hal库里有这样一个宏定义,供参考:
  1. #define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))
复制代码



cxtarm 回答时间:2015-2-5 12:13:50
1、乘以16是为了便于将小数存储在寄存器中
2、可以读取每隔IO的中断标志位


cxtarm 回答时间:2015-2-5 12:15:16
_ilikerome_ 发表于 2015-2-5 11:45
汗,这个是中断,判断端口没用的吧。

怎么没有用,5-9虽然占用的同一个中断向量,但是每个端口还是有自己的中断标志的



埃斯提爱慕 回答时间:2015-2-5 15:24:05
提示: 作者被禁止或删除 内容自动屏蔽
_ilikerome_ 回答时间:2015-2-5 21:28:19
dsjsjf 发表于 2015-2-5 15:24
判断IO口在部分场合还是有用的,比如下降沿中断,可以在进中断后判断该端口是否为低电平;另外,还可以通 ...

大体明白了
埃斯提爱慕 回答时间:2015-2-6 12:37:28
提示: 作者被禁止或删除 内容自动屏蔽

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版