昨天晚上发了一个简单应用UART的例子以后,本人就在琢磨如何把定时器和中断应用进去。参考了网友定时器blinky的程序,发现其实定时器用到UART中也比较简单。
分享具体的步骤如下:
1. 新建工程,添加相关的模块,其中UART的相关APP模块添加和配置可以见上一个帖子。
2. 在UART的基础上添加TIMER和INTERRUPT两个APP模块。
3. 分别对两个模块设置。TIMER的设置如下,注意要使能定时事件,这样才能连接到中断去。
4. 设置中断如下:
这里需要注意中断处理句柄函数定义为UerIRQHandler(),需要在后面main程序中自行添加,定义的函数名也可以自己修改。
5. 设置TIMER的HW信号连接,将定时事件与中断连接上,配置如下图。
6. 然后修改main程序,需要定义全局变量和一个中断处理程序。具体代码如下:
- #include <DAVE.h>
- void UserIRQHandler();
- UART_STATUS_t init_status;
- uint8_t valid_str[] = "hello world!\n";
- int main(void)
- {
- DAVE_STATUS_t status;
- status = DAVE_Init(); /* Initialization of DAVE APPs */
- init_status = (UART_STATUS_t)UART_Init(&UART_0);
- if(status != DAVE_STATUS_SUCCESS)
- {
- /* Placeholder for error handler code. The while loop below can be replaced with an user error handler. */
- XMC_DEBUG("DAVE APPs initialization failed\n");
- while(1U)
- {
- }
- }
- /* Placeholder for user application code. The while loop below can be replaced with user application code. */
- while(1U)
- {
- }
- }
- void UserIRQHandler()
- {
-
- if(init_status==UART_STATUS_SUCCESS){
-
- UART_Transmit(&UART_0, valid_str, sizeof(valid_str));
-
- UART_Transmit(&UART_0,"time interrupted",sizeof("time interrupted"));
-
- }
- }
7. 编译、现在运行,使用PUTTY软件,可以看到程序运行正常。
总结:计时器的应用非常简单,我们只需要设定好计时数值,这里数值是按照微秒us计算的,不用像以前还需要自己算来配置各个寄存器的值,非常方便,赞一个。
XMC4800的硬件资源非常丰富,接下来,我将考虑看看ADC和DAC的使用及DAVE相关操作。网上关于APP的使用教程不多,其实DAVE软件里相关的chm电子资料很多,都配有相关的资料参考,很方便,只要耐下心来,相信大家都能轻松驾驭。
此内容由EEWORLD论坛网友flyword原创,如需转载或用于商业用途需征得作者同意并注明出处