本帖最后由 hejun96 于 2021-9-2 08:49 编辑
#申请原创# @21小跑堂
在今年的年初,开始使用雅特力AT32F403A/F413 RCT7两款型号,可以pin to pin STM32F103RCT6.开始根据参考手册和bsp的指引,附上F403A数据手册和参考手册,发现AT库和ST的库较为类似,但因为使用到了64pin的XMC,由于资源外设决定必须使用AT库配置XMC的寄存器,所以就放弃了使用ST库,在看参考手册和与雅特力原厂工程师交流的过程中,使用AT库大致知道方向。 并成功申请到了AT32F403A的开发板,在开发板上我从板载的LED和按键开始,利用定时器中断点亮跑马灯,验证UART的中断收发,通用定时器的pwm输出。当时对ST库和AT库的pwm,adc,exti,gpio,xmc,tmr等几个部分进行过详细的对比,发现移植的步骤是把结构体初始化一样的移植过来,只是名字上要使用AT的库命名。并且AT库的主频选择上可以比ST库更高,适合做gui,主频越高则刷屏越流畅。
参考了AT库的bsp XMC后移植demo例程并完成了初始化,此处的寄存器配置要对应各位的板子上XMC复用引脚组,这里手册截图到了XMC的复用IO口,重映射和非重映射各有一组IO可进行复用,看附图。
从RCC,GPIO,XMC,SYSTICK,RTC,PWM,以及移植emwin的gui控件,在原厂工程师和参考手册的帮助下,轻而易举的从ST库移植成AT库并只用了3天时间,而移植后使用到的项目是做一款带LCD显示的空气检测器,在和AT32的各个外设的操作过程中,结合自己之前使用ST的经验,以最快的速度对AT的bsp的理解以及移植调用,在底层的理解上所花的时间并不多,所以对外设和整体功能的把握有了信心。用轮询配合外部中断以及定时器中断轮换切换gui的点,线,2D绘图和文本,达到了可以通过中断事件的处理完成一些简单的显示功能。然后调用字体的颜色显示让字体显示出不同颜色,后面还需要显示二氧化碳,甲醛,pm2.5,温湿度等空气质量的数据,主要是使用UART和IIC了,串口的轮询发送和中断接收的方式比较稳定的读到了传感器返回的字节并做有简单的校验方式。IIC则是温湿度的数据读取,起始位,传输W/R 位,传输数据位,停止位,并辅以示波器查看IIC波形,最后贯穿gui显示完成了所有功能。在雅特力高主频的性能上显示ui更加的流畅,而如果是用STM32F103,当时没有外部晶体的情况下,则主频上最高只能到64Mhz,而我当时使用AT库,主频就配置到了内部72MHz,对于9600的串口波特率也正常稳定传输。
用gui的2D绘图方式在LCD上画圆环的方法如下: int x0 = 158,y0=110;
for(i=0;i<90;i++)
{
float a = (i*10)*3.1415926/360;//角度
int x = 65*cos(a)+x0;
int y = 65*sin(a)+y0;
GUI_DrawLine(85*cos(a)+x0,85*sin(a)+y0,x,y);
}
圆环的做法也就是用的线条做的,做法就是用圆的参数方程x= a+r*cos 角度 y = a+r*sin 角度,参数方程表示的就是圆上的一点和圆半径r的关系,也就是三角函数
(i*10)也就是按 10/360 角度等分扇形
65表示的是小圆的半径r,85表示的是大圆的半径R 。那么线条也就是起始坐标到端点坐标。那么我只要把起始坐标用大圆的上面的点坐标-小圆上面的点坐标,得到的就是环形了。图形类似于图片中间的环形了!
"受任于败军之际,奉命于危难之间"
2021年,前受疫情影响,后有芯片紧缺,在此危难之间,雅特力迎难而上。AT32F403A,AT32F413给我们的样品带来希望,AT32F403A/413以高主频兼容SXX32F103的优势强势归来,F403A的XMC解决RCT7的小封装的LCD 8080接口问题,3路UART直击传感器收发,IIC模拟时序读取温湿度,RTC按键调时写后备寄存器,gui显示,按键切换页面,外部中断唤醒低功耗模式。这些外设的使用在雅特力的参考手册和FAE的帮助下得到了逐步的解决
"虎踞龙盘今胜昔,天翻地覆慨而慷"
希望下半年的缺货潮雅特力能走出来,最后 点击这里可查看我自己用AT32F403A+emwin完成的环境检测器video,加油,雅特力中国芯!
|