问答

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

21ic问答首页 - TAG - L17
  • HC32L176JETA Pcnt模块

    使用PCNT模块给霍尔传感器脉冲计数时,采用官方例程单脉冲计数可用,双通道非交脉冲计数模式时,[color=rgb(192, 191, 188)][font=Consolas, "]g_u32CircleCount[/font][/color][color=rgb(192, 191, 188)][font=Consolas, "]=Pcnt_GetCnt();[/font][/color]使用该函数观测计数值无变化。 下图是所使用的例程 [color=#bbbbbb][backcolor=rgb(29, 29, 29)][font=Consolas, "][color=#c0bfbc]}[/color] [color=#9a9996]/**[/color] [color=#9a9996] ******************************************************************************[/color] [color=#9a9996] ** [/color][color=#ffa348][b]\brief[/b][/color][color=#9a9996] 初始化外部GPIO引脚[/color] [color=#9a9996] **[/color] [color=#9a9996] ** [/color][color=#ffa348][b]\return[/b][/color][color=#9a9996] 无[/color] [color=#9a9996] ******************************************************************************/[/color] [color=#5bc8af][b]static[/b][/color][color=#c0bfbc] [/color][color=#5bc8af][b]void[/b][/color][color=#c0bfbc] App_GpioInit([/color][color=#5bc8af][b]void[/b][/color][color=#c0bfbc])[/color] [color=#c0bfbc]{[/color] [color=#c0bfbc] [/color][color=#5bc8af][b]stc_gpio_cfg_t[/b][/color][color=#c0bfbc] [/color][color=#c0bfbc]GpioInitStruct[/color][color=#c0bfbc];[/color] [color=#c0bfbc] [/color][color=#7d8ac7]DDL_ZERO_STRUCT[/color][color=#c0bfbc]([/color][color=#c0bfbc]GpioInitStruct[/color][color=#c0bfbc]);[/color] [color=#c0bfbc] Sysctrl_SetPeripheralGate([/color][color=#c0bfbc]SysctrlPeripheralGpio[/color][color=#c0bfbc], [/color][color=#7d8ac7]TRUE[/color][color=#c0bfbc]);[/color] [color=#c0bfbc] [/color] [color=#c0bfbc] [/color][color=#c0bfbc]GpioInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]enDrv[/color][color=#c0bfbc] = [/color][color=#c0bfbc]GpioDrvH[/color][color=#c0bfbc];[/color] [color=#c0bfbc] [/color][color=#c0bfbc]GpioInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]enDir[/color][color=#c0bfbc] = [/color][color=#c0bfbc]GpioDirIn[/color][color=#c0bfbc];[/color] [color=#c0bfbc] Gpio_Init([/color][color=#c0bfbc]GpioPortB[/color][color=#c0bfbc],[/color][color=#c0bfbc]GpioPin5[/color][color=#c0bfbc],&[/color][color=#c0bfbc]GpioInitStruct[/color][color=#c0bfbc]);[/color] [color=#c0bfbc] Gpio_SetAfMode([/color][color=#c0bfbc]GpioPortB[/color][color=#c0bfbc],[/color][color=#c0bfbc]GpioPin5[/color][color=#c0bfbc],[/color][color=#c0bfbc]GpioAf6[/color][color=#c0bfbc]);[/color][color=#77767b] //PB05作为PCNT_S0[/color] [color=#c0bfbc] Gpio_Init([/color][color=#c0bfbc]GpioPortB[/color][color=#c0bfbc],[/color][color=#c0bfbc]GpioPin7[/color][color=#c0bfbc],&[/color][color=#c0bfbc]GpioInitStruct[/color][color=#c0bfbc]);[/color] [color=#c0bfbc] Gpio_SetAfMode([/color][color=#c0bfbc]GpioPortB[/color][color=#c0bfbc],[/color][color=#c0bfbc]GpioPin7[/color][color=#c0bfbc],[/color][color=#c0bfbc]GpioAf7[/color][color=#c0bfbc]);[/color][color=#77767b] //PB07作为PCNT_S1[/color] [color=#c0bfbc] [/color] [color=#c0bfbc] [/color][color=#77767b]// GpioInitStruct.enDir = GpioDirOut;[/color] [color=#c0bfbc] [/color][color=#77767b]// Gpio_Init(STK_LED_PORT, STK_LED_PIN, &GpioInitStruct); //PD14配置成输出,控制板上蓝色LED[/color] [color=#c0bfbc] [/color][color=#77767b]// Gpio_WriteOutputIO(STK_LED_PORT, STK_LED_PIN, TRUE); [/color] [color=#c0bfbc]}[/color] [color=#9a9996]/**[/color] [color=#9a9996] ******************************************************************************[/color] [color=#9a9996] ** [/color][color=#ffa348][b]\brief[/b][/color][color=#9a9996] 配置PCNT[/color] [color=#9a9996] **[/color] [color=#9a9996] ** [/color][color=#ffa348][b]\return[/b][/color][color=#9a9996] 无[/color] [color=#9a9996] ******************************************************************************/[/color] [color=#5bc8af][b]static[/b][/color][color=#c0bfbc] [/color][color=#5bc8af][b]void[/b][/color][color=#c0bfbc] App_PcntInit([/color][color=#5bc8af][b]void[/b][/color][color=#c0bfbc])[/color] [color=#c0bfbc]{[/color] [color=#c0bfbc] [/color][color=#5bc8af][b]stc_pcnt_initstruct_t[/b][/color][color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc];[/color] [color=#c0bfbc] [/color][color=#7d8ac7]DDL_ZERO_STRUCT[/color][color=#c0bfbc]([/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc]);[/color] [color=#c0bfbc] Sysctrl_SetPeripheralGate([/color][color=#c0bfbc]SysctrlPeripheralPcnt[/color][color=#c0bfbc], [/color][color=#7d8ac7]TRUE[/color][color=#c0bfbc]);[/color] [color=#c0bfbc] [/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_S0Sel[/color][color=#c0bfbc] = [/color][color=#c0bfbc]PcntS0PNoinvert[/color][color=#c0bfbc];[/color][color=#77767b] //S0输入极性不取反[/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_S1Sel[/color][color=#c0bfbc] = [/color][color=#c0bfbc]PcntS1PNoinvert[/color][color=#c0bfbc];[/color][color=#77767b] //S1输入极性不取反 [/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_Clk[/color][color=#c0bfbc] = [/color][color=#c0bfbc]PcntCLKPclk[/color][color=#c0bfbc];[/color][color=#77767b] //采样时钟[/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_Mode[/color][color=#c0bfbc] = [/color][color=#c0bfbc]PcntSpecialMode[/color][color=#c0bfbc];[/color][color=#77767b] //双通道正交脉冲计数模式[/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_FltEn[/color][color=#c0bfbc] = [/color][color=#7d8ac7]TRUE[/color][color=#c0bfbc];[/color][color=#77767b] //滤波使能[/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_DebTop[/color][color=#c0bfbc] = [/color][color=#7d8ac7]5[/color][color=#c0bfbc];[/color][color=#77767b] //滤波计数器阈值[/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_ClkDiv[/color][color=#c0bfbc] = [/color][color=#7d8ac7]5[/color][color=#c0bfbc];[/color][color=#77767b] //滤波时钟分频系数[/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_TocrEn[/color][color=#c0bfbc] = [/color][color=#7d8ac7]TRUE[/color][color=#c0bfbc];[/color][color=#77767b] //超时控制使能[/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_TocrTh[/color][color=#c0bfbc] = [/color][color=#7d8ac7]2000[/color][color=#c0bfbc];[/color][color=#77767b] //超时阈值[/color] [color=#c0bfbc] [/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc].[/color][color=#c0bfbc]Pcnt_Dir[/color][color=#c0bfbc] = [/color][color=#c0bfbc]PcntDirUp[/color][color=#c0bfbc];[/color][color=#77767b] //增模式[/color] [color=#c0bfbc] Pcnt_Init(&[/color][color=#c0bfbc]PcntInitStruct[/color][color=#c0bfbc]);[/color] [color=#c0bfbc] Pcnt_SetB2C([/color][color=#7d8ac7]100[/color][color=#c0bfbc]);[/color][color=#77767b] //计数溢出值100[/color] [color=#c0bfbc] Pcnt_ClrItStatus([/color][color=#c0bfbc]PcntOV[/color][color=#c0bfbc]);[/color][color=#77767b] //清除PCNT溢出中断[/color] [color=#c0bfbc] Pcnt_ItCfg([/color][color=#c0bfbc]PcntOV[/color][color=#c0bfbc], [/color][color=#7d8ac7]TRUE[/color][color=#c0bfbc]);[/color][color=#77767b] //使能溢出中断[/color] [color=#c0bfbc] EnableNvic([/color][color=#c0bfbc]PCNT_IRQn[/color][color=#c0bfbc], [/color][color=#c0bfbc]IrqLevel3[/color][color=#c0bfbc], [/color][color=#7d8ac7]TRUE[/color][color=#c0bfbc]);[/color][color=#77767b] //使能中断向量[/color] [color=#c0bfbc] [/color] [color=#c0bfbc]}[/color] [color=#5bc8af][b]void[/b][/color][color=#c0bfbc] Pcnt_IRQHandler([/color][color=#5bc8af][b]void[/b][/color][color=#c0bfbc])[/color] [color=#c0bfbc]{[/color] [color=#c0bfbc] [/color][color=#ffa348][b]if[/b][/color][color=#c0bfbc](Pcnt_GetItStatus([/color][color=#c0bfbc]PcntOV[/color][color=#c0bfbc]) == [/color][color=#7d8ac7]TRUE[/color][color=#c0bfbc])[/color] [color=#c0bfbc] {[/color] [color=#c0bfbc] Pcnt_ClrItStatus([/color][color=#c0bfbc]PcntOV[/color][color=#c0bfbc]);[/color] [color=#c0bfbc] [/color][color=#c0bfbc]g_u32CircleCount4[/color][color=#c0bfbc]=[/color][color=#7d8ac7]1[/color][color=#c0bfbc];[/color] [color=#c0bfbc] [/color] [color=#c0bfbc] }[/color] [color=#c0bfbc]}[/color] [/font][/backcolor][/color]

    单片机 国产芯片 嵌入式 技术交流 模块 L17

    646浏览量 4回复量 关注量
  • HC32L17系列串口通信问题 sos

    案例代码都是用9600作为波特率与串口通信,结果没问题,但是调到115200后,出现了乱码,发现是实际波特率的问题,于是用示例的App_RCH4MHzToPll48MHz代码,调到48MHZ,实际串口没问题,但是在与4G模块通信时,还是会出现数据缺失的问题 [img]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAAA5CAIAAABVrPmkAAADzElEQVR4Ae2b304UMRTG2+EhCL6T+iQ+A2IiJhhUWFB2V99IvBFv8AITRVxEVEBv1wyHfPvtaedfZ2eFUkLI1zPntD2//pkys2vs4Nz2z2z/t935ZV+d2pc/7PZ32xvZzSO7cWiff7brB3Zt3zx+bx7uLt19sLi4OB6PTfppA255bORXMHKR7XFCDga3TNMO2hVxUjPGdAEO+KKlZozJhhfZ4DwbnJXvcXZ1z668W7o32eOYDnT8KxRzYebgjMk3vvh/ugB3K9glcIGLIxicTCve1G7XcaQNuMCxiiMsgQscxwQuEJwdXuRn4IH8u/oz/3d1+8RuHdveN7v51b74YtYPzNq+Wd0zK2/5HBfYXjRhLcHxkQ03B75juKDYje8wqIodxIgKcYkD3SbmYZktOJzgQEFyQBECnl7BRm8N3nrmwQtttAfHObgJe9NG6yVX3WrFwn9VuKq222IbcG4OLjgsLgg3H++lcnCoRLnB3rnoGpwkgPQgOLE6RvERxIj1BuJqt6IlOHeyeJOBEYKzqmMUn3jASf6cOWumU+LpDVFGFCHcyudqqZxx9tkn+/SjffJBneN48KHdCegmo3xUUXZJGAUTimoP/Z8Qg8G5RG6XJYELHO8ELoELJBAYNtsZh11cberYxdmBffieUCcTrkf82YLm3JuJarROW36f9uDQSwjuLowQfBU5K+Hv67QVFZaIorYQMl1lk1JH4NAFdBHCm4xcLfFBhRBwVgJF8ZSZqKKUD642EPXB2Ue76nmcWh3e3sCH+6Q8kZuyc4ir3Zq9FjVO0kSjhtymc0sbcFIjOgHBLdUxig/wcXiJRhR86lgUR8Q2FjcdHINwBwlzkC+xbswLAe3BoSruEDQE3DhVMcIHgp2LNJwbCbf1ovor7DMEJ33iFYcBRydggRssKiXgQCwLFYUiBDojUWKHsbxybqhQzxZcYTPxXUjgAsc0gQsEt/Dmb/5Oenh++THgq/eqWf4x4Kv3qnge557jApuMI8wLjl9IJ3D+gU7g/FwqrdnrP+5STTOukptJ4KoZeT3SUvViqTYmcNWMvB4JnBdLtRF73OVXHeQcd2q3Tha2j7PeUbZxyMeRO/cn33Oorjpuj0bg1IPMuMlUZOcDl38i0zvjErgJzSJw2dbIXaoJXAI3IRCoimZcnaXKTw3VM0I8OAzs1vUPCwbHD1GhXXH9CQT2sAtwwBfYpxsRxuCy/uXX8qe/58DnOL45MB3o+FcoBtULzvRGlQ8yAYtfsoiRL6Gh2EQX4BhlbLyQTwIHFM1EMDh1/lDF6De7f28tAO9q96A8AAAAAElFTkSuQmCC[/img] 发送AT+CPIN?后,应该回复+CPIN:READY,但实际转发到串口查看,缺少数据D,实际代码也没往下跑,因为接收数据缺失 在检测4G模块正常的情况下,是哪里出现了问题?代码如下: /*author ljx*/ #include "hc32l17x.h" #include "uart.h" #include "gpio.h" int RxCount=0;//接收缓冲区坐标 char RxBuffer[1000];//接收缓冲区 //串口引脚配置 void usart1_Init(void) { stc_gpio_cfg_t stcGpioCfg; stc_uart_cfg_t stcCfg; stc_uart_baud_t stcBaud; DDL_ZERO_STRUCT(stcGpioCfg); DDL_ZERO_STRUCT(stcCfg); DDL_ZERO_STRUCT(stcBaud); Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //使能GPIO模块时钟 ///=1000) RxCount=0; //字符数组满了,从头再来 } }

    嵌入式 HC L17 串口通信 ST stc

    1072浏览量 0回复量 关注量