fxyc87

  • 2025-01-21
  • 回复了主题帖: 两种电流检测电路有什么区别

    低端的容易实现,成本低,主端的特别是电压较高时,成本较高,另外低端没高端安全,因为有时候负载需要共地通信,会有问题。

  • 2025-01-20
  • 回复了主题帖: 全国的3C补贴来了,你准备换手机了吗?

    wangerxian 发表于 2025-1-17 09:06 3年算短算长? 中等偏短吧

  • 2025-01-16
  • 回复了主题帖: 全国的3C补贴来了,你准备换手机了吗?

    我的手机每次换都是因为大家说用的时间太长了,哪里都好好的,实在不想换,最近用的3个手机都是。

  • 回复了主题帖: E2PROM的数据怎么读取出来?

    淘宝上有专门读EEPROM的工具,SOP8的夹子,有读FLASH的,也有读EEPROM的,

  • 2024-12-25
  • 回复了主题帖: 固态继电器关断不彻底的原因是什么?

    你已经说了,交流固态继电器,只适合控制交流,直流当然不能用了,你了解一下可控硅的触发原理

  • 2024-12-23
  • 回复了主题帖: 请问CH340G串口友好名称能否修改成设备名称?

    WCH官网有专用的可以改名称的,外置EEPROM的

  • 2024-12-18
  • 回复了主题帖: vscode+keil5环境下,在vscode中打开keil5项目文件后找不到源码文件,请问如何处理

    有很多文件是MDK的特有文件,将其从MDK软件目录复制出来,比如说像stdint.h stdio.h string.h等等,否则也会找不到的。

  • 回复了主题帖: 高频率脉冲怎么转变为模拟量?

    是有好多温度传感器是以脉冲输出的,其实很简单啊,用MCU的定时器,输入源设为外部时钟就可以了,

  • 2024-12-12
  • 发表了主题帖: 【MCXN947评测】-点灯

    前言 本次测评是直接在NXP官网上申请的,不是参加的EEWORLD的活动,所以评测也没有了压力,自己有空了就玩玩。 我和有个坛友一样,首次接触ARM单片机就是LPC1114,当年是ZLG推广的,开发板当时也很“便宜”,50块钱逻板+下载器。从51单片机转过来,很快就入门了。玩过LPC1114的都知道,它是基于寄存器写代码的,对于了解单片机底层确实很深入。后来玩STM32直接用库就没怎么深入了。 再之后玩过LPC1225、LPC1770系列,之后就转STM32了。 N947资源还是比较不错的,我主要看中的是双核、AI、16位AD,3运放,XSPI、大内存、大FLASH这几款特性。因为我后边想在项目里用上它。特别是它的XSPI可以同时支持外部FLASH和外部串行RAM,扩个32M大内存也没问题。 安装环境 官方主推的是【MCUXpresso IDE】,我花了一点时间安装了环境,想说的是爱你真不容易,需要勇气。 MCUXpresso IDE安装后,光是导入SDK我就花了好久,在网上找的教程图片,安装软件后,仍是没找到安装SDK的界面在哪,见下图,这个界面试了好久才找出来的,得先点左上角红点处,点了之后界面还特别小,拖到最大才显示出安装SDK的位置,并且所有菜单中都找不到这一项,只能用这种方法调出来。   导入SDK下一步时,它竟然还要联网,我不是把SDK下载好了么?我在公司电信网络一直过不去,回到家用移动网才行 后来我就放弃了,直接用它配置工具,将SDK导出到KEIL中用,还是熟悉的配方和味道。       引脚配置工具 NXP的引脚配置工具功能非常强大,和STM32 CUBE MX有一拼,不过功能多了显得有些乱,特别是在高分屏上显示的总觉得怪怪的。STM32CUBE MX它生成的代码有很多注释,用户程序只要放在规定的USER CODE注释中,再次生成也不会被删除,但NXP的好像不行,不过一般也不需要,因为它生成的文件逻辑层次很好,都是在独立文件中,也不需要和用户代码嵌在一起。 还有个特点是NXP的更新程序代码有代码比较工具,以及寄存器变更列表,很容易知道改了哪些。   点灯 查看开发板图纸,三色灯-红灯是安排在P0-10引脚上的,低电平点亮 用引脚配置工具配置引脚,配置别称,初始电平,方向等 引脚标签一定要起一个,后边写代码时好调用    然后再配置一下Systick,配置为1ms中断 然后就是代码了 搞个延时函数,以及systick irq中断函数,修改主逻辑,其它的代码不改 uint32_t tick_count=0; void Delay(int ms){ tick_count=ms; while(tick_count); } void SysTick_Handler(void){ if(tick_count) tick_count--; } int main(void) { char ch; /* Init board hardware. */ /* attach FRO 12M to FLEXCOMM4 (debug console) */ CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u); CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH); /* attach TRACECLKDIV to TRACE */ CLOCK_SetClkDiv(kCLOCK_DivTraceClk, 2U); CLOCK_AttachClk(kTRACE_DIV_to_TRACE); BOARD_InitPins(); BOARD_InitBootClocks(); BOARD_InitDebugConsole(); PRINTF("hello world.\r\n"); BOARD_InitBootPeripherals(); //初始化外设-SYSTICK 1ms中断 while (1) { //ch = GETCHAR(); //PUTCHAR(ch); Delay(500); BOARD_INITPINS_LED_RED_GPIO->PDOR&=~BOARD_INITPINS_LED_RED_GPIO_PIN_MASK; //清0,点亮 Delay(500); BOARD_INITPINS_LED_RED_GPIO->PDOR|=BOARD_INITPINS_LED_RED_GPIO_PIN_MASK; } } 代码中,由于在引脚配置时,已配置了引脚标签,所以这里调用就比较方便了。 寄存器直接写代码,NXP的还是很方便的。 测试中发现一个问题,其它朋友好像也提到过的,下载程序没运行,调试或复位才会执行,后边再查查原因。 我比较喜欢自己搞代码,我看有很多评测把官方例子跑一次就好了,那是学不到东西的,得自己动手。    

  • 发表了日志: 【MCXN947评测】-点灯

  • 2024-12-10
  • 回复了主题帖: NXP有活动,大家可以去试试!

    bigbat 发表于 2024-12-9 16:54 我今天下午收到板子了,FRDM-MCXA156开发板,加紧时间适用不知道需要在哪里发帖子 我选的是N947板子

  • 2024-12-07
  • 回复了主题帖: NXP有活动,大家可以去试试!

    bigbat 发表于 2024-12-4 09:14 呵呵,我和你的待遇是一样地。也是没有任何的反馈。你给不给板子发个消息也行啊 最近:就在刚刚周六晚上,收到了板子,准备发个贴讲讲板子试用进度,一起互相学习。

  • 2024-12-04
  • 回复了主题帖: NXP有活动,大家可以去试试!

    我通过了,发了地址,但好像一周多过去了也没提示发货或收到收件信息。

  • 2024-12-02
  • 回复了主题帖: FREERTOS串口输出出错

    最大优先级是多少?你配置的线程优先级超过了最大值,好像默认值一般是8吧,

  • 2024-11-21
  • 回复了主题帖: 关于USB的TYPE -C接口

    Dp1,Dn1 ,Dn2,Dp2不是两组,是1组,因为TYPE-C是支持正反插的,实际上只有2根1对差分。  A2\A3\A10\A11如果不用USB 3.0信号是可以用做其它目的的,但一般不这么玩,万一别人插上了USB 3。0设备,你的板子引脚不是烧了么?

  • 回复了主题帖: 咨询步进电机驱动方案

    你如果量大当然可以自己搞MCU驱动,否则没必要。

  • 2024-11-20
  • 回复了主题帖: STM32L4系列的USB驱动

    HID不就行了?

  • 回复了主题帖: STM32系列哪款芯片的功耗最低

    当然最新的U系列了

  • 2024-11-13
  • 回复了主题帖: 如何使能二进制信号量

    我只是大自然的搬运工 1. **二进制信号量简介**    - 在FreeRTOS中,二进制信号量是一种用于任务同步和互斥的机制。它只有两种状态:满(被获取)和空(可用)。二进制信号量可以用于保护共享资源,也可以用于任务之间的同步。 2. **使能二进制信号量的步骤**    - **创建二进制信号量**      - 使用`xSemaphoreCreateBinary()`函数来创建一个二进制信号量。这个函数返回一个`SemaphoreHandle_t`类型的句柄。例如: ```c SemaphoreHandle_t binarySemaphore; binarySemaphore = xSemaphoreCreateBinary(); if(binarySemaphore == NULL) {     // 创建失败的处理,可能是内存不足等原因     // 可以在这里添加错误处理代码,如打印错误信息等 } ```    - **给出(释放)信号量**      - 二进制信号量创建后,默认是没有被获取的(空状态)。可以使用`xSemaphoreGive()`函数来释放信号量,使其变为满状态。例如,在一个任务中释放信号量: ```c void vTaskFunction(void *pvParameters) {     // 其他任务代码     // 释放信号量     if(xSemaphoreGive(binarySemaphore)== pdTRUE)     {        // 信号量释放成功的处理     }     else     {        // 信号量释放失败的处理,可能是信号量无效等原因     }     // 任务的其他代码 } ```    - **获取信号量**      - 另一个任务或者中断服务函数(在满足条件的情况下)可以使用`xSemaphoreTake()`函数来获取信号量。当信号量处于满状态时,`xSemaphoreTake()`函数会将信号量变为空状态,并允许任务继续执行。例如: ```c void anotherTaskFunction(void *pvParameters) {     if(xSemaphoreTake(binarySemaphore, portMAX_DELAY)== pdTRUE)     {        // 成功获取信号量,执行受信号量保护的代码段        // 例如访问共享资源等        // 完成后可以再次释放信号量,以便其他任务获取        xSemaphoreGive(binarySemaphore);     }     else     {        // 获取信号量失败的处理,可能是信号量为空且等待超时等原因     } } ```    - **注意事项**      - 当在中断服务函数中使用信号量时,应该使用`xSemaphoreGiveFromISR()`函数来释放信号量,而不是`xSemaphoreGive()`。因为在中断服务函数中不能调用会导致阻塞的函数。`xSemaphoreGiveFromISR()`函数的使用稍微复杂一些,它需要一个额外的参数来指示是否需要进行任务切换。例如: ```c void vISRFunction(void) {     BaseType_t xHigherPriorityTaskWoken = pdFALSE;     xSemaphoreGiveFromISR(binarySemaphore, &xHigherPriorityTaskWoken);     if(xHigherPriorityTaskWoken == pdTRUE)     {        // 请求任务切换,使等待信号量的高优先级任务能够尽快运行        portYIELD_FROM_ISR();     } } ```      - 在使用二进制信号量进行任务同步或互斥时,要确保正确地初始化、释放和获取信号量,以避免出现死锁或资源竞争等问题。并且要根据具体的应用场景合理地设置信号量获取的等待时间,如使用`portMAX_DELAY`表示一直等待,直到信号量可用,或者使用其他较短的时间值来实现有限时间的等待。

  • 2024-11-11
  • 回复了主题帖: LIN转串口的电压问题

    LIN还需要转串口么?直接串个电阻,再弄个稳压管直接就进TTL引脚上去不就行了?

统计信息

已有670人来访过

  • 芯积分:1090
  • 好友:4
  • 主题:82
  • 回复:1062

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言