问答

汇集网友智慧,解决技术难题

八层楼

TA的家园币:2710  

  • PIC16F72 的ASM源码编译错误

    本帖最后由大大的木头于2023-11-2715:25编辑如题,编译出错。output如下:是缺少P16F72.INC文件吧,能提供一下吗?其它还有什么问题?感谢!

    2023-11-27 10
  • 华大HC32L130J8TA,UART1+DMA功能正常,换成UART0就用不了了,什么原因?

    本帖最后由breakP于2023-11-210:27编辑直接用的例程,这是UART1+DMA可以正常使用,但是换成UART0就不行了,接线,参数都检查过了int32_tmain(void){//uart端口配置App_UartPortInit();//UART模块配置App_UartCfg();//DMA参数配置App_DmaCfg();while(1){if(5==Dma_GetStat(DmaCh0))//完成一次通道传输(UART1_RX->RAM缓存2字节){Dma_DisableChannel(DmaCh0);//禁用通道0delay10us(100);Dma_EnableChannel(DmaCh1);//使能通道1Dma_ClrStat(DmaCh0);//清除通道0状态值}if(5==Dma_GetStat(DmaCh1))//完成一次通道传输(RAM缓存->UART1_TX2字节){Dma_DisableChannel(DmaCh1);//禁用通道1Dma_EnableChannel(DmaCh0);//使能通道0Dma_ClrStat(DmaCh1);//清除通道0状态值}}}//UART模块配置voidApp_UartCfg(void){stc_uart_cfg_tstcCfg;stc_uart_baud_tstcBaud;DDL_ZERO_STRUCT(stcCfg);//初始化变量DDL_ZERO_STRUCT(stcBaud);//初始化变量Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);//使能UART1外设时钟门控开关stcCfg.enRunMode=UartMskMode1;//模式3stcCfg.enStopBit=UartMsk1bit;//1位停止位stcCfg.stcBaud.u32Baud=9600;//波特率9600stcCfg.stcBaud.enClkDiv=UartMsk8Or16Div;//通道采样分频配置stcCfg.stcBaud.u32Pclk=Sysctrl_GetPClkFreq();//获得外设时钟(PCLK)频率值Uart_Init(M0P_UART1,&stcCfg);//串口初始化Uart_ClrStatus(M0P_UART1,UartRC);//清接收请求Uart_ClrStatus(M0P_UART1,UartTC);//清发送请求Uart_EnableFunc(M0P_UART1,UartDmaTxFunc);//使能DMA发送,DMA相关通道使能后,如果TxBuff为空,会立马启动传输Uart_EnableFunc(M0P_UART1,UartDmaRxFunc);//使能DMA接收}//DMA参数配置voidApp_DmaCfg(void){stc_dma_cfg_tstcDmaCfg;DDL_ZERO_STRUCT(stcDmaCfg);//初始化变量Sysctrl_SetPeripheralGate(SysctrlPeripheralDma,TRUE);//使能DMAC外设时钟门控开关//rxdma配置stcDmaCfg.u32SrcAddres

  • gd32l23cct6 硬件i2c 等待TI / RBNE标志位超时

    gd32l23cct6芯片在硬件i2c读写过程中会偶尔出现write函数在TI标志位超时跳出,read函数在RBNE标志位超时跳出,TIMEOUT时间测试200ms+,在这两个标志位超时异常跳出导致i2c通信时序缺少stop位,bsy标志位一直位1,i2c再也无法继续通信,一定要通过复位i2c外设才能解决。硬件i2c驱动代码去下intgd32_i2c_write(unsignedcharbus,unsignedshortaddr,unsignedchar*data,unsignedintdata_len){drv_i2c_mgr_t*i2c_mgr=NULL;unsignedinttimeout=DRV_I2C_TIME_OUT;unsignedintidx;if(bus>=DRV_I2C_BUS_MAX){return-1;}i2c_mgr=&s_st_i2c_mgr;if(0==i2c_mgr->is_init){return-1;}/*waituntilI2Cbusisidle*/timeout=DRV_I2C_TIME_OUT;i2c_master_addressing(i2c_mgr->periph,addrperiph,data_len);while(i2c_flag_get(i2c_mgr->periph,I2C_FLAG_I2CBSY)){if((timeout--)==0){return-1;}}/*sendastartconditiontoI2Cbus*/timeout=DRV_I2C_TIME_OUT;i2c_start_on_bus(i2c_mgr->periph);/*waituntilthetransmitdatabufferisempty*/I2C_STAT(i2c_mgr->periph)|=I2C_STAT_TBE;while(!i2c_flag_get(i2c_mgr->periph,I2C_FLAG_TBE)){if((timeout--)==0){return-1;}}for(idx=0;idx<data_len;idx++){/*datatransmission*/timeout=DRV_I2C_TIME_OUT;i2c_data_transmit(i2c_mgr->periph,data);while(!i2c_flag_get(i2c_mgr->periph,I2C_FLAG_TI)){if((timeout--)==0){LOG_DIRECT_ERR("ti\r\n");return-1;}}}timeout=DRV_I2C_TIME_OUT;while(!i2c_flag_get(i2c_mgr->periph,I2C_FLAG_TC)){if((timeout--)==0){return-1;}}/*sendastopconditiontoI2Cbus*/i2c_stop_on_bus(i2c_mgr->periph);/*waituntilstopconditiongenerate*/while(!i2c_flag_get(i2c_mgr->periph,I2C_FLAG_STPDET)){if((timeout--)==0){return-1;}}/*cleartheSTPDETbit*/i2c_flag_clear(i2c_mgr->periph,I2C_FLAG_STPDET);return0;}intgd32_i2c_read(unsignedcharbus,unsignedsh

    GD32 I2c

    2023-09-21 11
  • J-LINK如何支持GD32

    本帖最后由ee230于2022-4-1116:13编辑请教版主,以及各位同道中人:开发一款GD32F303的程序,原先电脑有安装j-link5.12版本,但这个版本不支持GD32.现在就想让j-link支持这款GD32,功能包括j-flash,j-link调试(IAR)。大概有2种方法:1.在j-link5.12版本上打个补丁,支持GD322.更新j-link到最新版本(我看segger官方最新的应该支持)方法1是否有解?使用j-link是否有注意的地方?

  • 遇到一个GD32E230C8T6奇怪的问题(初次上电无法启动)

    这个电路之前用的是STM32G0C8T6,工作的一直没问题,最近发现GD32E230C8T6非常便宜就打样几块板回来,只更换了单片机,其他一个器件没动;现在遇到一个从没遇到过的问题:1)完全断电的情况下,第1次上电无法启动,硬件复位也不行,只能重新断电再上电就正常启动,启动后,然后运行也没问题;2)短时间断电(电容电未放完)的情况下重新上电也能启动;手动给电容放电后,再上电第一次也无法启动;电路也比较简单,就锂电池供电,1路LDO3.3V供MCU和外设,一路LDO供TM1628A,搞了几天天,各种器件拆拆补补也没解决问题。程序使用的内部IRC8M,没焊外部8M晶振,希望大家帮忙一起排查一下,谢谢!尝试办法:用示波器测试了MOS开关,3.3V没有毛刺,有1K+0.1uF的缓启动电路;复位也尝试改为1uF+10K,问题也依旧,找不到方法了

    国产芯片 单片机

    2022-04-06 11
  • Bootloader和APP两个项目合并编译问题

    按BootloaderGeneratorUser’sGuide中操作分别建立APPPROJECT和BOOTLOADPROJECT,且通过宏定义,将BOOTLOADER中的配置位注释掉,编译后错误为:error:unabletorenametemporary'build/default/production/mcc_generated_files\mcc.i-88103138'tooutputfile'build/default/production/mcc_generated_files\mcc.i':'Permissiondenied'1errorgenerated.(908)exitstatus=1nbproject/Makefile-default.mk:243:recipefortarget'build/default/production/mcc_generated_files/mcc.p1'failedmake[2]:***Error1make[2]:***Waitingforunfinishedjobs....make[2]:Leavingdirectory'E:/mydoc/myProject/my_doc/20220316ForceTest/PRO/20220316TestForce16F18424/20220316TestForce16F18424.X'nbproject/Makefile-default.mk:91:recipefortarget'.build-conf'failedmake[1]:Leavingdirectory'E:/mydoc/myProject/my_doc/20220316ForceTest/PRO/20220316TestForce16F18424/20220316TestForce16F18424.X'nbproject/Makefile-impl.mk:39:recipefortarget'.build-impl'failedmake[1]:***[.build-conf]Error2make:***[.build-impl]Error2不知什么情况?请各路好汉帮助看看,MPLABX5.5。不会贴图啊。

    2022-04-06 13
  • dsp33ep512 mplabx xc16 程序报错

    本帖最后由pzsh于2022-4-2011:01编辑报这个错误,内存50k的内存,才用了20多k。build/default/production/_ext/812168374/rel_ratiodiff.o:LinkError:Couldnotallocatesection.bss,size=96bytes,attributes=bssbuild/default/production/_ext/812168374/sam_interrput.o:LinkError:Couldnotallocatesection.bss,size=90bytes,attributes=bssbuild/default/production/_ext/812168374/Base_DO.o:LinkError:Couldnotallocatesection.bss,size=40bytes,attributes=bssbuild/default/production/_ext/1239188649/timer.o:LinkError:Couldnotallocatesection.bss,size=36bytes,attributes=bssbuild/default/production/_ext/812168374/Fun_SelfCheck.o:LinkError:Couldnotallocatesection.bss,size=30bytes,attributes=bssbuild/default/production/_ext/812168374/CommStruct.o:LinkError:Couldnotallocatesection.bss,size=20bytes,attributes=bss

    2022-04-02 8
  • 关于PIC32MX250F128B问题

    我给PIC32MX250F128B写了一个点亮LED,单片机输出没有任何反应,我把所有引脚输出高电平,外用表测引脚,还是低电平,是不是单片机是假的?但是能烧写进去程序,难道是我的程序由问题?第一次用PIC32单片机。有没有一个示例程序呀

    128 mx PIC32 单片机 电平 引脚

    2022-03-02 10
  • GD32f103使用TIMER2+DMA输出问题

    本帖最后由zxywq于2022-1-615:27编辑GD32f103使用TIMER2+DMA输出波形每一帧数据的第一个字节的最高位丢失

  • N76E003 PWM如何捕获占空比

    我在使用n76e003做占空比捕获的时候,发现频率5K占空比0.1%的时候捕获会出错误。有没有大佬有成熟的占空比捕获的程序给我参考一下。

    MUC 国产芯片

    2021-12-10 10
  • NUC972配置管脚输出高频时钟CLK_OUT异常

    最近学着使用NUC972,使用GPIO可以点亮LED,但是无法输出CLK_OUT,这个是怎么回事?求助voidclk_out_config(clk_freqFREQ){setReg32(REG_CLK_PCLKEN0,getReg32(REG_CLK_PCLKEN0)|(1

    新唐 972 单片机 时钟 输出

    2021-12-10 11
  • 结构体按位对齐后的赋值

    本帖最后由slf123123于2021-4-1909:13编辑typedefunsignedlongDWORD;#pragmapack(push)#pragmapack(1)typedefstructsi{DWORDa:4;DWORDb:7;DWORDc:3;DWORDd:1;DWORDe:3;DWORDf:14;}si;#pragmapack(pop)如上所示这个结构体对齐后是四个字节然后uint8buff[4];怎么将buff赋值给整个结构体structsisu={buff[0],buff[1],buff[2],buff[3]};这样赋值不行吗

    ig struct AC ck typedef structs

    2021-04-17 14
  • PIC16LF876A无法编程

    主频8Mhz或16Mhz,使用的PCKIT3.5,已排除接线等故障,显示thefollowingmemoryregionsfailedtoprogramcorrectly:programmemoryAddress:00000001expectedvalue0000118areceivedvalue:00000000programmingfailed.请问各位专家,此故障是什么原因所致,如何克服,谢谢!

  • stm32l476移植鸿蒙系统求助

    本帖最后由walker2048于2020-12-1510:17编辑本人菜**一只,尝试着移植鸿蒙2.0系统到stm32l476rg_nucleo开发板。现在碰到一些问题,想问下论坛里的大佬是否可以给点提示,非常感谢。环境配置描述:目前已完成至设置好clang+gcc工具链(最后ld时使用arm-none-eabi-gcc)配置,编译参数根据cubeMX生成的makefile文件修改好了。该工具链与编译参数使用在cubeMX生成的标准程序里可正常运行(点灯OK,延时500毫秒OK,printf重定向串口输出OK)。---------------------------参数设置如下defines=-DUSE_HAL_DRIVER-DSTM32L476xxasmflags=-mcpu=cortex-m4-mthumb-mfpu=fpv4-sp-d16-mfloat-abi=hard#-fshort-enums-targetarm-none-eabi这两个参数是clang用的cflags=-mcpu=cortex-m4-mthumb-mfpu=fpv4-sp-d16-mfloat-abi=hard-fshort-enums-targetarm-none-eabi-fPICcflags_c=-Og-Wall-fdata-sections-ffunction-sections-g-gdwarf-2ldflags=-T../../vendor/st/board/stm32l476rg/STM32L476RGTx_FLASH.ld-lc-lm-lnosys-specs=nano.specs-mcpu=cortex-m4-mthumb-mfpu=fpv4-sp-d16-mfloat-abi=hard-Og-Wall-fdata-sections-ffunction-sections-g-gdwarf-2---------------------------问题描述如下,mcu的时钟定义设置为最高速80M,在cubeMX生成的标准程序里(不管是gcc编译或者clang编译),SystemCoreClock可顺利更新为80M,程序正常。但是在移植到鸿蒙的代码中,HAL库无法更新SystemCoreClock变量,不管是如何修改cubeMX的时钟定义(降频改配置,修改UART2时钟信号源),均无法正常运行点灯与串口输出功能,HAL_Delay功能也出错。目前判断是只要使用到SystemCoreClock变量的,都会出错。自己在单步调试中将SystemCoreClock变量赋值为80M,也无法正常运行程序。--------------------------想求助一下论坛里的大佬,是否能帮忙看一下到底是什么地方有问题。源码地址附上:https://gitee.com/walker2048/hmos_iot,请切换到clang_stm32