Cpu0_Main.c 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /*********************************************************************************************************************
  2. * COPYRIGHT NOTICE
  3. * Copyright (c) 2020,逐飞科技
  4. * All rights reserved.
  5. * 技术讨论QQ群:三群:824575535
  6. *
  7. * 以下所有内容版权均属逐飞科技所有,未经允许不得用于商业用途,
  8. * 欢迎各位使用并传播本程序,修改内容时必须保留逐飞科技的版权声明。
  9. *
  10. * @file main
  11. * @company 成都逐飞科技有限公司
  12. * @author 逐飞科技(QQ3184284598)
  13. * @version 查看doc内version文件 版本说明
  14. * @Software ADS v1.2.2
  15. * @Target core TC264D
  16. * @Taobao https://seekfree.taobao.com/
  17. * @date 2020-3-23
  18. ********************************************************************************************************************/
  19. #include "headfile.h"
  20. #include "pikascript.h"
  21. #pragma section all "cpu0_dsram"
  22. //将本语句与#pragma section all restore语句之间的全局变量都放在CPU0的RAM中
  23. //工程导入到软件之后,应该选中工程然后点击refresh刷新一下之后再编译
  24. //工程默认设置为关闭优化,可以自己右击工程选择properties->C/C++ Build->Setting
  25. //然后在右侧的窗口中找到C/C++ Compiler->Optimization->Optimization level处设置优化等级
  26. //一般默认新建立的工程都会默认开2级优化,因此大家也可以设置为2级优化
  27. //对于TC系列默认是不支持中断嵌套的,希望支持中断嵌套需要在中断内使用enableInterrupts();来开启中断嵌套
  28. //简单点说实际上进入中断后TC系列的硬件自动调用了disableInterrupts();来拒绝响应任何的中断,因此需要我们自己手动调用enableInterrupts();来开启中断的响应。
  29. uint8 uart_buff;
  30. int core0_main(void)
  31. {
  32. get_clk();//获取时钟频率 务必保留
  33. //用户在此处调用各种初始化函数等
  34. uart_init(UART_0, 115200, UART0_TX_P14_0, UART0_RX_P14_1);
  35. enableInterrupts();
  36. uart_putstr(UART_0, "\n---uart test---\n");
  37. gpio_init(P20_8, GPO, 0, PUSHPULL);
  38. //在本库中,对于串口的接收与发送都是通过中断完成的,因此想要正常的使用串口功能务必保证中断是开启的,也就是调用了enableInterrupts()
  39. //串口的中断函数全部都在isr.c中。
  40. //串口中断相关的配置参数都在isr_config.h中
  41. //可配置参数有 ERU_CH0_CH4_INT_SERVICE 和 ERU_CH0_CH4_INT_PRIO
  42. //UART0_INT_SERVICE 中断服务者,表示改中断由谁处理,0:CPU0 1:CPU1 3:DMA 不可设置为其他值
  43. //UART0_TX_INT_PRIO 发送中断优先级 优先级范围1-255 越大优先级越高 与平时使用的单片机不一样
  44. //UART0_RX_INT_PRIO 接收中断优先级
  45. //UART0_ER_INT_PRIO 错误中断优先级
  46. //其他串口中断参数同理
  47. //需要特备注意的是 不可以有优先级相同的中断函数 每个中断的优先级都必须是不一样的
  48. //等待所有核心初始化完毕
  49. IfxCpu_emitEvent(&g_cpuSyncEvent);
  50. IfxCpu_waitEvent(&g_cpuSyncEvent, 0xFFFF);
  51. enableInterrupts();
  52. // PikaObj* pikaMain = pikaScriptInit();
  53. pikaScriptShell(pikaScriptInit());
  54. //注意 从V1.1.6版本之后 printf打印的信息从串口输出具体可以学习库例程6-Printf_Demo
  55. //注意 从V1.1.6版本之后 printf打印的信息从串口输出具体可以学习库例程6-Printf_Demo
  56. //注意 从V1.1.6版本之后 printf打印的信息从串口输出具体可以学习库例程6-Printf_Demo
  57. while (TRUE)
  58. {
  59. //查询是否有数据,如果有则接收
  60. if(uart_query(UART_0, &uart_buff))
  61. {
  62. //将收到的数据,再发出去
  63. uart_putchar(UART_0, uart_buff);
  64. gpio_toggle(P20_8);
  65. }
  66. //使用usb转ttl连接单片机的串口,在电脑上打开串口助手,任意发送字符,
  67. //单片机收到后会返回发送的字符,串口助手就会显示刚才发送的东西
  68. }
  69. }
  70. char __platform_getchar()
  71. {
  72. while(TRUE){
  73. if(uart_query(UART_0, &uart_buff))
  74. {
  75. return uart_buff;
  76. }
  77. }
  78. }
  79. #pragma section all restore