是高性能、低成本、低功耗。
stm32是一种32位的单片机。单片机是嵌入式系统中最常用的核心部件,stm32本质上也是一种单片机。
STM32单片机是ST(意法半导体)公司使用arm公司的cortex-M3为核心生产的32bit系列的单片机,他的内部资源(寄存器和外设功能)较8051、AVR和PIC都要多的多,基本上接近于计算机的CPU了,适用于手机、路由器等等。
总的来说就是STM32有好几个UART,初始化的时候根据你设定的UARTx的值,来判断开启哪个UART,注意这个(*(u32*)&USARTx)的意思,,,
STM32和K210都可以使用C/C++进行编程,但是并不是完全一样的。这两个微控制器的硬件设计不同,因此它们的编程语言也会有所差异。
STM32是一种基于ARM Cortex-M内核的微控制器,它的编程语言可以使用通用的C/C++,也可以使用专门针对STM32的编程库。这些编程库可以提供丰富的接口来简化程序开发,例如访问各种外设、控制PWM输出、使用串口等。
K210是一种基于RISC-V内核的微控制器,它的编程语言同样可以使用C/C++,也有专门针对K210的编程库。这些编程库可以提供和STM32类似的功能,例如访问外设、控制PWM输出、使用串口等。
由于STM32和K210的硬件设计不同,所以它们使用的编程库也会有所差异。如果你学习了STM32的编程,那么可能需要花一些时间来学习K210的编程库。不过,如果你已经熟悉C/C++语言,并且了解了微控制器的基本工作原理,那么学习K210的编程库应该不会太困难。
总的来说,学习K210的编程库是一个逐步的过程,需要你不断学习和练习才能掌握。不过,如果你已经学习过STM32的编程,并且对C/C++语言和微控制器的工作原理有所了解,那么学习K210的编程库应该会比较容易。
stm32扩展4路串口,可以用串口扩展芯片,这类芯片非常多,可选一两款外围元件少,电路简单的芯片。
推荐一,国产的,双串口芯片CH432。
CH432 是双UART 芯片,包含两个兼容16C550 的异步串口,支持半双工收发自动切换和IrDA 红外编解码,支持最高4Mbps 的通讯波特率,可以用于单片机/嵌入式系统的RS232 串口扩展、带自动硬件速率控制的高速串口、RS485 通讯、IrDA 通讯等。
第二款,TL16C554。
这两个芯片在使用时外围件最少,电路相对简单些。
实验室项目需要使用STM32开发,Hal库的资料相对较少,关于UART中断与之前使用飞思卡尔芯片的中断不同。
首先在CubeMX中配置好UART中断;重点是:需要在主循环之前手动开启接收中断:
只有手动开启之后才能进入中断。
此外,HAL库中,无论何种类型的UART中断,都会进入:
在此函数中判断具体是何种中断,再调用相应的中断服务函数,接收中断是:
而此函数会调用:
最需要注意的一点是:
在回调函数最后需要再次开启中断!!否则只能执行一次!!
个人理解 这里将中断服务设置为等待模式 等待接收字符。
在Keil中进行断点调试 发现接受字符后会首先进入。
HAL_UART_IRQHandler 。
函数,而不是直接进入 UART_Receive_IT 函数进行处理。
相当于UART中断服务程序有一个统一入口。
HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, 1) 语句相当于打开这个入口,经测试如果去掉这句的话,再发送字符是不会进入HAL_UART_IRQHandler语句的。
刚开始接触STM32与HAL库函数,理解肯定不是很到位。
参考自:
http://www.eeworld.com.cn/mcu/article_2017092734800.html 。
http://www.stm32cube.com/article/74。