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

关于串口波特率 & 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个回答
dsjsjf 回答时间:2015-2-4 20:08:43
1、16进制的取小数部分,所以除以16(分母乘以16);
2、可以判断相应IO口状态,(好像也可以通过 ITStatus EXTI_GetITStatus(uint32_t EXTI_Line) 来判断)
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虽然占用的同一个中断向量,但是每个端口还是有自己的中断标志的



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

判断IO口在部分场合还是有用的,比如下降沿中断,可以在进中断后判断该端口是否为低电平;另外,还可以通过获取端口的中断状态来实现
_ilikerome_ 回答时间:2015-2-5 21:28:19
dsjsjf 发表于 2015-2-5 15:24
判断IO口在部分场合还是有用的,比如下降沿中断,可以在进中断后判断该端口是否为低电平;另外,还可以通 ...

大体明白了
dsjsjf 回答时间:2015-2-6 12:37:28

希望早点实现代码

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版