做单片机开发久了,发现用的单片机也多,现在每个厂家都提供对应的库以方便加快客户的开发。但是总是有那么一些人,不习惯用官方的库,因为厂家太多,每家写代码的规范都不一样,A厂的单片机是一个规范,B厂的单片机可能又是一个规范,C厂的又会是其他的规范,这样看起来就有点头大了。对于我们这种习惯了使用寄存器开发的老鸟,我有时候就干脆不用官方的头文件,自己定义头文件,统一规范。又由于一般写单片机程序还都是要看寄存器用户手册的,于是干脆自己动手写头文件吧,而且我发现自己定义寄存器相关头文件,可以更加深刻的了解单片机。
下面以MM32L0xx系列单片机的UART模块为例进行介绍。
首先我们根据寄存器用户手册的UART模块的寄存器概况,定义一个UART类型struct UartType,然后定义好模块访问指针pstUart1和pstUart1 如下:
![b67fdf09d395de1220928d617ec110d5.png](https://i-blog.csdnimg.cn/blog_migrate/0f21e3a98e4f60c9a5a37a5687742566.jpeg)
MM32L0xx系列单片机UART寄存器概览
/**MM32L0xx串口硬件寄存器定义*/struct UartType{ __IO uint32_t vuiTdr; __I uint32_t vuiRdr; __I uint32_t vuiCsr; __I uint32_t vuiIsr; __IO uint32_t vuiIer; __O uint32_t vuiIcr; __IO uint32_t vuiGcr; __IO uint32_t vuiCcr; __IO uint32_t vuiBrr; __IO uint32_t vuiFra;// __IO uint32_t vuiRxAddr;// __IO uint32_t vuiRxMask;// __IO uint32_t vuiScr;};/** 操作MM32L0xx串口硬件的指针*/#define pstUart1 ((struct UartType *) DE_Uart1BaseAddress)#define pstUart2 ((struct UartType *) DE_Uart2BaseAddress)