[原创] 【 XMC4800 Relax EtherCAT Kit测评】+上手DAVE,定时中断与UART简单应用

flyword   2019-1-26 20:54 楼主
昨天晚上发了一个简单应用UART的例子以后,本人就在琢磨如何把定时器和中断应用进去。参考了网友定时器blinky的程序,发现其实定时器用到UART中也比较简单。
分享具体的步骤如下:
1.    新建工程,添加相关的模块,其中UART的相关APP模块添加和配置可以见上一个帖子。
2.    在UART的基础上添加TIMER和INTERRUPT两个APP模块。
添加APP模块.png
3.    分别对两个模块设置。TIMER的设置如下,注意要使能定时事件,这样才能连接到中断去。
TIMER设置.png TIMER设置2.png
4.    设置中断如下
中断设置.png
这里需要注意中断处理句柄函数定义为UerIRQHandler(),需要在后面main程序中自行添加,定义的函数名也可以自己修改。
5.    设置TIMER的HW信号连接,将定时事件与中断连接上,配置如下图。
定时器与中断的HW信号信号连接.png
6.    然后修改main程序,需要定义全局变量和一个中断处理程序。具体代码如下:
  1. #include <DAVE.h>                 

  2. void UserIRQHandler();
  3. UART_STATUS_t init_status;

  4. uint8_t valid_str[] = "hello world!\n";
  5. int main(void)
  6. {
  7.   DAVE_STATUS_t status;

  8.   status = DAVE_Init();           /* Initialization of DAVE APPs  */

  9.   init_status = (UART_STATUS_t)UART_Init(&UART_0);

  10.   if(status != DAVE_STATUS_SUCCESS)
  11.   {
  12.     /* Placeholder for error handler code. The while loop below can be replaced with an user error handler. */
  13.     XMC_DEBUG("DAVE APPs initialization failed\n");

  14.     while(1U)
  15.     {

  16.     }
  17.   }

  18.   /* Placeholder for user application code. The while loop below can be replaced with user application code. */
  19.   while(1U)
  20.   {

  21.   }
  22. }


  23. void UserIRQHandler()
  24. {
  25.          
  26. if(init_status==UART_STATUS_SUCCESS){
  27.                  
  28. UART_Transmit(&UART_0, valid_str, sizeof(valid_str));
  29.                   
  30. UART_Transmit(&UART_0,"time interrupted",sizeof("time interrupted"));
  31.           
  32. }

  33. }

7.    编译、现在运行,使用PUTTY软件,可以看到程序运行正常。
运行结果.png
总结:计时器的应用非常简单,我们只需要设定好计时数值,这里数值是按照微秒us计算的,不用像以前还需要自己算来配置各个寄存器的值,非常方便,赞一个。
XMC4800的硬件资源非常丰富,接下来,我将考虑看看ADC和DAC的使用及DAVE相关操作。网上关于APP的使用教程不多,其实DAVE软件里相关的chm电子资料很多,都配有相关的资料参考,很方便,只要耐下心来,相信大家都能轻松驾驭。



此内容由EEWORLD论坛网友flyword原创,如需转载或用于商业用途需征得作者同意并注明出处

回复评论 (1)

楼主,我按照您的方法操作了一遍,但只能显示第一行发送的内容,就是只显示hello world! 实在搞不懂为什么,您知道问题在哪吗?

 

点赞  2020-12-2 16:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复