【经验】如何解决芯海2.05版本pack包自带USART例程USART_Interrupt中的小BUG?
芯海32位MCU CS32F031K8U6H有5个USART可以使用,而USART也是研发日常设计中要经常使用到的资源, USART属于低速串行总线,在收发过程中所占用的时间比较长,所以设计过程中经常使用中断接收发送或者DMA传输等方式,以减少控制器在收发过程中所占用的等待时间。芯海2.05版本的PACK中就提供了USART_Interrupt这么一个使用中断发送和接收的例程,但是官方提供的这个例程是有BUG的,下面我们一起来看下,再一起分析讨论下解决的方案。
我们先看下官方例程中的串口中断函数的实现,如下图所示:
我们来看下__USART_FLAG_STATUS_GET的实现:
其实可以看出来只是返回了STS寄存器对应的状态位是否被置位,而if (__USART_FLAG_STATUS_GET(USART1, TXE) == SET)本身只是判断了在进入中断后TXE是否被置位,如果置位就进入发送一个数据的流程。而如下图所示,TXE标志只要是在没有发送数据的情况下都是会被置位的。本身程序设计的想法是,只要不打开发送中断的使能位,即使TXE置位也没有关系,因为不会进入中断处理函数。当然这只是想法,实际上芯海CS32F031K8U6H对于USART的发送、接收、错误都是同一个中断入口。所以试想一下,当USART1明明没有请求发送数据,但接收到一个数据,或者发生一个OVR错误等都会进入这个中断,这个时候,if (__USART_FLAG_STATUS_GET(USART1, TXE) == SET)本身也是成立的,所以就错误的进入了发送数据的流程。
说完了问题,那么我们来看看该如何解决呢,首先我们还是要看芯海BSP中提供的另外一个函数,如下图所示:
__USART_INTR_STATUS_GET这个函数其实就是在__USART_FLAG_STATUS_GET的基础上还检查了这个对应标记的中断是否被使能,所以将例程中替换成使用if (__USART_INTR_STATUS_GET (USART1, TXE) == SET)来判断,即使进入了中断处理函数且TXE标记置位,还需要发送中断被使能才会触发USART的发送流程。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由土肥圆提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】国产32位MCU N32G457VEL7替换STM32F407VET6的硬件设计注意事项
国民技术推出的32位MCU N32G457VEL7采用32-bit ARM Cortex-M4内核,广泛应用于网络打印,工业控制等领域,在货源紧张时完全可以替换STM32F407VET6,但封装引脚定义上还是有些许差异,需要注意。
【经验】实战芯海CS32F031C8T6 MCU使用GCC编译器的startup.s启动文件
本文将以芯海推出的32位MCU CS32F031C8T6为例,给大家分享一个startup.s文件,希望帮助有需要使用GCC开发芯海CS32F031C8T6产品的各位小伙伴。
【经验】航顺32位MCU HK32F030M FLASH擦写操作非法操作解决方案
HK32F030M是航顺一款入门级经济型32位MCU,使用ARM® Cortex®-M0内核,最高工作频率32MHz。本文将介绍HK32F030M FLASH擦写操作非法操作解决方案。
海信旗下“隐形冠军”信芯微,授权世强硬创代理32位MCU等产品
信芯微32位MCU及蓝牙芯片主要应用于智能家电、工业控制、消费电子等领域。
灵动微电子扎根张江造“芯”,打造本土32位MCU知名品牌
灵动微电子成立于2011年,2016年进军MCU市场,2019年积极向工业、大家电、汽车等领域发力,目前已涵盖消费电子、电机与电源、家电、汽车、计算机与通信、工业控制等应用领域,客户群体包括飞利浦、小米、汇川、海尔、海信、美的等,是中国本土领先的通用32位MCU 产品及解决方案供应商。
【应用】国产32位MCU AT32F403ARCT7用于智能止鼾枕,最高主频240MHz
智能止鼾枕是一种非穿戴式的智能止鼾设备,内置气囊,声音、压力传感器。本文推荐采用国产雅特力推出的32位MCU AT32F403ARCT7为主控, 最高主频240MHz,Flash 256k,工作温度范围-40~+105℃。
厦门澎湃微电子(PENGPAI MICROELECTRONICS)8位/32位MCU & ADC选型指南
澎湃微电子是一家以32位MCU为主营方向的集成电路设计公司(fabless),公司在上海设有研发中心,在深圳设有销售中心,总部设立在厦门。公司产品除了通用型MCU(32位/8位)之外,还有24位高精度ADC等模拟芯片。产品市场涵盖工业控制、消费电子、物联网、医疗健康、BLDC电机控制、小家电等领域。
厦门澎湃微电子 - VALUE LINE MCU,高精度ADC,价值线MCU,HIGH PERFORMANCE MCU,主流MCU,超低功耗MCU,ULTRA LOW POWER MCU,高性能MCU,通用及触摸MCU,工规通用MCU,超值MCU,MAINSTREAM MCU,商规通用MCU,PMS133-S16,PMS15A-S08,PMS133-S14,PMC153-S14,PMS163-2J16A,PT32F005F6X6R,PFS123-S16,PT32S032C6T6,PT32L031K6,PT32L033C8T6,PMC234-S20,PT32L076C8T7,PT32F030系列,PFC232-S14,PFS154-S16,PFC232-S16,PFS154-S14,PFS173-U06,PFS122-U06,PT32S038系列,PT32S038K6U6,PT32F005F6,PFS123-S14,PMC234-S16,PFS123-S08,PT32S038R8T6,PMS160-1N06,PFC161-EY10,PFC154-S08,PMC234-S14,PFS154-S08,PMS134-Y24,PT32L030C8T7,PMS134-H20,PFC154-S14,PFC154-S16,PT32X003F4X6CR,PT32L007F6P7,PT32L030K6,PT32S038K6T6,PFC151-S08,PT32S032K6,PT32L076KB,PT32S032K8,PT32F030C8,PT32L030K8,PT32F030C6,PT32L076K8,PFC161-U06,PT32L031S6U6,PT32L005F6X6,PT32Y003F4,PFC232-S08,PMC156-S16,PMS163-U06,PMC232-H20,PFC232-D16,PT32L030K6X7,PMS163-M10,PT32S038R8R6,PMS154C-S08,PTADN24,PT32F030C6T7,PT32F005系列,PT32F007F8P7,PFS173-S16,PFS173-S14,PMS15A-U06,PT32L005F6X6R,PMC150-S08,PT32X003系列,PFC460-S16,PMS154C-S16,PMS134-S14,PMS132-S08,PT32S038,PMS134-S16,PT32L031G6,PMC234-Y24,PFC460-S14,PMS150G-S08,PMS154C-S14,PT32L030系列,PT32S032C8T6,PT32L076K8X7,PT32L076系列,PT32F005F6X6,PT32Z192系列,PT32L076R8T7,PFS173-S08,PT32X003F4P6A,PT32S038K8U6,PT32L076CB,PT32L076CBT7,PMS160-U06A,PT32S038R6,PFS123-U06,PT32X003F4X6C,PT32L031F6,PT32S038R8,PFC460-T28,PFC460-S08,PT32X003F4P6B,PT32Y003E4,PMC251-S14,PFC460-T20,PT32Y003系列,PFC151-D08,PT32Y003F4X6DR,PT32S038C6,PT32S038C8,PT32F030K8T7,PT32L007F8P7,PT32L030C6T7,PT32Y003,PFC161-S08B,PFC161-S08A,PT32X003F4,PT32S038K8T6,PT32F030G8,PT32L030G8,PT32F030G6,PT32L030G6,PT32L031F6P6,PT32F030K8U7,PT32L033R6R6,PT32S032,PT32F007F6P7,PFC460-S28,PT32L076,PTADN24系列,PT32F030G8P7,PFC460-S24,PT32Z192KCX6,PFC460-S20,PMS163-1J16A,PMC131-S08B,PMC131-S08A,PT32S032K6T6,PMS160-2N08B,PMS160-2N08A,PT32L031S6,PMS171B-S14,PT32L076KBX7,PFS172-S14,PMC232-S14,PMC232-S16,PT32Z192RCR6,PMS171B-S16,PT32L076K8T7,PTADN24E0S6,PMC232-S20,PMC271-S08,PT32L007F8,P3910,PMS160-S08A,PMS160-S08B,PMS163-S16A,PMS163-S16B,PFS172-S08,PT32L076RBT7,PMS171B-S08,P3909,PMC271-S16,PT32F030K6T7,PT32L030G8P7,PT32,PFC460-H20,P3903,P3902,PFS172-S16A,P3901,PT32F605,PT32S032C6,PT32S032C8,PMC234-H20,PT32S038C6T6,PT32L030C6,PT32S032系列,PT32L076C8,PT32L031系列,PT32L005F6,PT32F030K8,PFS123-H20,PT32L030C8,PMC251-S08,PMC271-S14,PT32L031K6U6,PT32F030K6,PT32L005F6P6,PT32L076R8,PT32X003,PMS133-U08,PT32F030K6U7,PMS133-U06,PT32S032K6U6,PT32L030,PT32L031,PT32L033,PT32L030K8T7,PMS132-S16A,PT32L031G6P6,PT32F030G6P7,PT32L076R8R7,PMS132-S14,PT32Z192KEX6,PT32L031K6T6,PT32L033R8R6,PT32L005系列,PT32F007F8X7,PT32L007F6X7,PT32L076RB,PMS134-S08,P3609,P3608,P3607,P3605,PT32Z192,PT32S032K8T6,P3602,P3601,PFC232-D08,PFC232-D14,PT32F005F6P6,PT32L005,PT32Z192RER6,PT32L007,PT32L033C8,PT32L033C6T6,PT32L033C6,PMS152-S16,PMS152-S14,PFS122-S08,PT32L076KBT7,PT32L033R8,PT32L033R6,PT32F007F6,PT32F007F8,PFS173-H20,PT32S038R6T6,PFS122-S14,PFS122-S16,PT32F030,PFS154-U06,PMS171B-U06,PT32F005,PT32L030G6P7,PMS163-S14,PMS152-S08,PT32F007,PT32S038K6,PT32S038C8T6,PMC131-S14,PT32S038K8,PMC131-S16,PT32Y003J4,PT32L033系列,PT32L007F6,PT32L031K6X6,PMS163-S08,PT32F007系列,PT32S032K8U6,PMS163-4N10,PFC154-D08,PT32L030K8X7,PT32L076RBR7,PT32S038R6R6,PFC154-D14,PT32L030K6T7,PFC154-D16,PMS154C-U06,PT32Y003F4X6D,PT32F030C8T7,PT32F007F6X7,PT32L007E6,PT32L007系列,PT32Y003F4P6A,PT32Y003F4P6B,PT32L007F8X7,PMS134-U06
【元件】晟矽微电新推32位MCU系列MS60F321X,转换速率最高1Msps,专为光模块市场而设计
晟矽微电子推出全新的32位MCU系列产品MS60F321X,专为光模块市场而设计,与国际主流厂商产品Pin2Pin兼容,12位高精度ADC转换速率最高1Msps,增益误差±3LSB,为客户提供了无缝迁移的便利。
芯海32位MCU选型表
芯海32位MCU选型表包括常规32位MCU、32位低功耗MCU、32位车规MCU。该选型表的Core包括M0和M3两种,内含型号是芯海科技基于Arm® Cortex®-M内核、高可靠性的32位通用微控制器。 包括多款产品,内嵌Flash存储器,集成高性能ADC、丰富的模拟外设、适用于工业控制的高级定时器和通信接口,满足工业应用的质量和可靠性标准,被广泛用于工业控制、汽车电子、智能家居等领域。
产品型号
|
品类
|
Core
|
Freq.(MHz)
|
Flash(Bytes)
|
SRAM(Bytes)
|
IO
|
Adv.Timer
|
16bit GP Timer
|
SysTick
|
FWDT/WWDT
|
UART
|
SPI
|
I2C
|
12bit ADC Units(ch)
|
Temp.Sensor
|
Operating Temp.(℃)
|
Supply Voltage(V)
|
Package
|
CS32F030F6P6-RA
|
32位MCU
|
M0
|
48MHz
|
32KBytes
|
4KBytes
|
15
|
1
|
5
|
1
|
1/1
|
4
|
1
|
1
|
1(9)
|
Y
|
-40℃~85℃
|
2.0V~5.5V
|
TSSOP20
|
选型表 - 芯海 立即选型
CS32G051 32 位 Type-C&PD 控制器
CS32G051是一款32位微处理器,适用于工业控制和高性能、低功耗应用。该芯片具备32MHz工作频率,内嵌256K字节程序Flash和12K字节SRAM,支持多种外设,包括I/O口、定时器、UART、I2C、ADC等。此外,CS32G051还支持In-System Programming (ISP) & In-Circuit Programming (ICP)功能,并提供多种工作模式以满足不同低功耗需求。
芯海 - 32 位 TYPE-C&PD 控制器,32位MCU,微控制器,控制器,CONTROLLER,CS32G051 系列,CS32G051KCU6,CS32G050KCU6,CS32G020XX,CS32G051,工业控制
【经验】以芯海32位MCU CS32F035F6P7为例介绍如何通过ISP上位机软件进行Flash的读写保护
ISP(在系统上编程)是一种常用的下载或者升级程序的方式,通常会选择使用UART进行操作。本文以芯海32位MCU CS32F035F6P7为例介绍通过上位机软件CS32 ISP Programmer进行Flash读写保护的方法。
MS60F302x 32位MCU数据手册
本资料为晟矽微电生产的MS60F302x系列32位MCU的数据手册,介绍了该系列产品的特性、功能和应用。主要包括ARM Cortex-M0内核、丰富的片上资源、多种外设接口、低功耗模式和强大的电源管理系统。
晟矽微电子 - 32 位 MCU,芯片,MS60F3023BP64,MS60F3023BP32,MS60F3023BP48,MS60F3026BP48,MS60F3025BP48,MS60F3026BP32,MS60F302X,MS60F3025BP64,MS60F3025BP32,MS60F301XBPXX,MS60F3026BP64,玩具,无刷直流电动机,电机控制,工业控制,通讯,智能家电,消防,电力,生活电器,智慧物联,照明,BMS,智能安防,安防网络,光伏,绿色能源,BLDC,厨卫电器,应急,飞控,光通讯,汽车电子,储能
【应用】芯海科技32位MCU CS32L010F8U6用于美眼仪,最高主频24MHz
根据美眼仪的应用需求,本文推荐采用国产芯海科技推出的32位MCU CS32L010F8U6为主控。该MCU最高主频24MHz,工作温度范围-40~+85℃,2.5~5.5V的工作电压,也被广泛应用于控制器,手持设备,GPS平台,PC外设等。
【经验】解析芯海科技32位MCU CS32F031G8U6在keil中新建工程的相关操作步骤
CS32F031G8U6是芯海科技推出的一款针对光模块应用的MCU解决方案,内部集成的温度传感器线性误差为+/-3℃,适用于10G 、25G、100G部分类型的光模块应用。本文介绍32位MCU CS32F031G8U6在keil中新建工程的相关操作步骤。
华芯微特SWM241系列32位MCU,工作频率最高48MHz,供电电压范围2.5V至5.5V
华芯微特SWM241系列32位MCU内嵌ARM® Cortex®-M0内核,凭借其出色的性能以及高可靠性、代码密度大等突出特点,可应用于工业控制、电机控制、白色家电等多种领域。SWM241支持片上包含精度为1%以内的48MHz时钟,最高支持48MHz时钟输出。同时提供最大为128K字节的FLASH和最大8K字节的SRAM。此外,芯片支持ISP操作及IAP,用户可自定义BOOT程序。
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论