AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX

最近意外的发现一款优秀的国产芯片——雅特力的AT32F403A
 
以下是摘自雅特力官网:
雅特力科技AT32F403A系列高效能微控制器,搭载32位ARM Cortex-M4内核,配合先进制程有效提升整体效能达240MHz的运算速度。内建的单精度浮点运算单元(FPU)及数字信号处理器(DSP),搭配丰富的外设及灵活的时钟控制机制,能满足多种领域应用。完善的内存设计,最高可支持1MB闪存存储器(Flash)及224KB随机存取存储器(SRAM),其闪存存储器执行零等待的优异表现,超越业界同级芯片水平。

 

240MHz主频,单精度浮点运算单元(FPU)  224KB SRAM一看到这些参数感觉就被种草了,没想到国产的MCU也能做的这么好,不管是性能还是价格上基本上是完全吊锤STM32F103。于是迫不及待的整了一块AT32F403A的板子回来,长下图这样
 
 
进入正题
因为以前一直使用的是STM32F103,所以这次先把环境搭好,再进行下一步操作,于是先移植个CMSIS RTOS V1封装层来试试水,这次使用的是之CMSIS RTX,freeRTOS版本后面有时间再搞
 
首先下载雅特力的BSP,类似于STM32 的标准库,现在由于雅特力官网在维护,所以下载地址被放到了百度云,地址如下

https://pan.baidu.com/s/1BQQz91QhJcyPF-mLMIsPJw   password: t3io
下载好了我们可以看到以下的文件结构
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第1张图片
 
然后我们进Project\AT_START_F403A\Examples\GPIO\LED_Toggle\MDK_v5这个工程来作为模板工程,越简单越好,所以我这里选择的是LED的工程
 
RTX源文件的位置C:\Users\sonnytu\AppData\Local\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS,每个人可能安装的位置可能不一样用evetything 搜索一下就能找到,目录如下,然后我们后面说的都用相对于这个文件夹下的目录了,这样比较省事
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第2张图片
 
我们在Middlewares新建一个文件夹RTX,然后我们将RTOS\RTX里的文件复制到Middlewares\RTX下
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第3张图片
 
然后在KEIL工程中添加文件如下
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第4张图片
因为AT32F403A是M4内核,所以这里选择的是HAL_CM4.c ,而STM32F103是M3内核选的是HAL_CM3.c
 
然后在KEIL工程中添加头文件路径如下
 
然后在C/C++ Define中添加__CORTEX_M4F,__CMSIS_RTOS,__FPU_PRESENT,意思是使用CMSIS封装层,使用浮点
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第5张图片
 
然后在at32f4xx_it.c中屏蔽以下几个中断,因为这几个中断被系统占用了
 
void SVC_Handler(void)
void PendSV_Handler(void)
void SysTick_Handler(void)
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第6张图片
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第7张图片
 
开始编译,编译通过,说明RTOS源文件和路径都正确添加了
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第8张图片
 
接下来配置RTX运行参数在RTC_Conf_CM.c中配置,参数配置成和下面一样即可,主要是要配置正确的主频,我这里使用默认的240Mhz
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第9张图片
 
一切准备就绪后,接下来写个任务运行看看效果
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第10张图片
 
在Debug模式下观看cnt的值,看到cnt[0]每隔1S增加1,cnt[1]每隔500ms增加1,说明移植成功
AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX_第11张图片
 
至此CMSIS RTX 移植结束,其实AT32F403A移植RTOS还是比较简单的,和STM32F4系列的是一模一样,因为内核是一样的,后面开始使用各个外设,看了一下AT32F403A和STM32F103的寄存器,外设的寄存器基本都一样,只要之前用过STM32F103那么上手是很容易的
 

 

你可能感兴趣的:(AT32F403A替代STM32F103之移植CMSIS RTOS V1封装层-CMSIS RTX)