问答

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

21ic问答首页 - TAG - se
  • STM32F103C8T6的GPIOA的15脚无法控制高低电平

    想利用STM32F103C8T6的GPIOA的11 12和15脚控制3个LED灯,但是发现无法控制GPIO15引脚的点平,但是11和12脚可以控制,初始化的时候试过了初始化所有引脚和仅初始化GPIOA的11 12和15脚,均无法控制15脚的高低电平,15脚一直是高电平。初始化代码如下:1、初始化所有GPIOA引脚 int main(void) { /*开启时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /*GPIO初始化*/ GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO模式,赋值为推挽输出模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; //GPIO引脚,赋值为所有引脚 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO速度,赋值为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //将赋值后的构体变量传递给GPIO_Init函数 while (1) { GPIO_ResetBits(GPIOA, GPIO_Pin_11); GPIO_ResetBits(GPIOA, GPIO_Pin_12); GPIO_ResetBits(GPIOA, GPIO_Pin_15); Delay_ms(500); GPIO_SetBits(GPIOA, GPIO_Pin_11); GPIO_SetBits(GPIOA, GPIO_Pin_12); GPIO_SetBits(GPIOA, GPIO_Pin_15); Delay_ms(500); } } 2、仅初始化GPIOA的引脚11 12和15脚 int main(void) { /*开启时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOA的时钟 /*GPIO初始化*/ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12| GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); //将PA11 PA12 PA15引脚初始化为推挽输出 while (1) { GPIO_ResetBits(GPIOA, GPIO_Pin_11); GPIO_ResetBits(GPIOA, GPIO_Pin_12); GPIO_ResetBits(GPIOA, GPIO_Pin_15); Delay_ms(500); GPIO_SetBits(GPIOA, GPIO_Pin_11); GPIO_SetBits(GPIOA, GPIO_Pin_12); GPIO_SetBits(GPIOA, GPIO_Pin_15); Delay_ms(500); } } 在单步调试的时候GPIO的IDR15引脚一直是高电平,是哪里出了问题呢?程序中只用到了GPIO的A引脚电量3个LED灯而已,没有别的模块了。 该怎么办呢?

    se ni 电平 GPIO stm32f103c8t6 控制

    3741浏览量 7回复量 关注量
  • LibSamples_MM32F0140_V1.2.6 是否可以增加 HSE PLL相关设定 RCC例程 sos

    [url=/data/attachment/album/202408/12/142733v7ang1vo1vb1aooo.png][img]/data/attachment/album/202408/12/142733v7ang1vo1vb1aooo.png[/img][/url] 是否可以增加 HSE PLL相关设定 RCC例程

    HS MM32F0140 se sample rc PLL

    945浏览量 0回复量 关注量
  • 变量不用计算就可以自增吗?

    下边是航顺HK32F030MF4P6的官方基本定时器例程,看到里边定义了一个time变量,但是没看到有计算过程(在整个工程中其他文件中也没有找到time变量),请问变量不计算怎么可以自增?下附部分代码: [backcolor=rgb(255, 255, 255)][font=Consolas, "][color=#008000]/**[/color] [color=#008000] ******************************************************************************[/color] [color=#008000] * [/color][color=#0000ff]@file[/color][color=#008000] main.c[/color] [color=#008000] * [/color][color=#0000ff]@author[/color][color=#008000] Alexander[/color] [color=#008000] * [/color][color=#0000ff]@version[/color][color=#008000] V1.0[/color] [color=#008000] * [/color][color=#0000ff]@date[/color][color=#008000] 2022-xx-xx[/color] [color=#008000] * [/color][color=#0000ff]@brief[/color][color=#008000] 基本定时器[/color] [color=#008000] ******************************************************************************[/color] [color=#008000] * [/color][color=#0000ff]@attention[/color] [color=#008000] *[/color] [color=#008000] * 实验平台:HK32F030M开发板[/color] [color=#008000] * 论坛 :https://bbs.21ic.com/iclist-1010-1.html[/color] [color=#008000] *[/color] [color=#008000] ******************************************************************************[/color] [color=#008000] */[/color] [color=#af00db]#include[/color][color=#0000ff] [/color][color=#a31515]"hk32f030m.h"[/color] [color=#af00db]#include[/color][color=#0000ff] [/color][color=#a31515]"bsp_led.h"[/color] [color=#af00db]#include[/color][color=#0000ff] [/color][color=#a31515]"bsp_TimBase.h"[/color] [color=#0000ff]volatile[/color] [color=#267f99]uint32_t[/color] [color=#001080]time[/color] = [color=#098658]0[/color];[color=#008000] // ms 计时变量[/color] [color=#008000]/**[/color] [color=#008000] * [/color][color=#0000ff]@brief[/color][color=#008000] 主函数[/color] [color=#008000] * [/color][color=#0000ff]@param[/color][color=#008000] [/color][color=#001080]无[/color] [color=#008000] * [/color][color=#0000ff]@retval[/color][color=#008000] 无[/color] [color=#008000] */[/color] [color=#0000ff]int[/color] [color=#795e26]main[/color]([color=#0000ff]void[/color]) { [color=#008000] /* LED 端口初始化 */[/color] [color=#795e26]LED_GPIO_Config[/color](); [color=#795e26]BASIC_TIM_Init[/color](); [color=#af00db]while[/color] ([color=#098658]1[/color]) { [color=#af00db]if[/color] ([color=#001080]time[/color] == [color=#098658]500[/color])[color=#008000] /* 1000 * 1ms = 1s 时间到 */[/color] { [color=#001080]time[/color] = [color=#098658]0[/color]; [color=#008000] /* LED1 取反 */[/color] [color=#0000ff]HandLED_TOGGLE[/color]; } } } [color=#af00db]#ifdef[/color][color=#0000ff] USE_FULL_ASSERT[/color] [color=#008000]/**[/color] [color=#008000] * [/color][color=#0000ff]@brief[/color][color=#008000] Reports the name of the source file and the source line number[/color] [color=#008000] * where the assert_param error has occurred.[/color] [color=#008000] * [/color][color=#0000ff]@param[/color][color=#008000] [/color][color=#001080]file[/color][color=#008000]: pointer to the source file name[/color] [color=#008000] * [/color][color=#0000ff]@param[/color][color=#008000] [/color][color=#001080]line[/color][color=#008000]: assert_param error line source number[/color] [color=#008000] * [/color][color=#0000ff]@retval[/color][color=#008000] None[/color] [color=#008000] */[/color] [color=#0000ff]void[/color] [color=#795e26]assert_failed[/color]([color=#0000ff]char[/color] *[color=#001080]file[/color], [color=#0000ff]uint32_t[/color] [color=#001080]line[/color]) { [color=#008000] /* User can add his own implementation to report the file name and line number,[/color] [color=#008000] tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */[/color] [color=#008000] /* Infinite loop */[/color] [color=#af00db]while[/color] ([color=#098658]1[/color]) { } } [color=#af00db]#endif[/color][color=#008000] /* USE_FULL_ASSERT */[/color] [/font][/backcolor] 我是新人,还没有家园币,暂时还没法设置悬赏,实在不好意思,麻烦大家了,多谢赐教!

    RT se TI keil ARM HK32F030MF4P6 航顺

    6948浏览量 10回复量 关注量
  • Libero 使用问题 sos

    在使用Libero中的simulate做前仿提示出现Error: Failure to obtain a Verilog simulation license. Unable to checkout 'microsemimsim' license feature.这个是什么问题呢?怎么解决呢

    UL ic SIM se Libero 使用

    898浏览量 0回复量 关注量
  • 大家帮忙看看MCPWM波形是否有问题 sos

    [img]file:///C:/Users/provac/AppData/Local/Packages/Microsoft.Windows.Photos_8wekyb3d8bbwe/TempState/ShareServiceTempFolder/11.jpeg[/img]

    os se AC TE MCPWM PWM波

    1052浏览量 0回复量 关注量
  • msp430f5529 进不了定时器中断

    程序如下,但是进不了中断,有谁知道可以告诉我么? char buffer[255]; int flag = 0,cont = 0; char data[3]= {'0','0','\0'}; uint8_t data1 = 0; uint16_t intialWheelValue = 0; uint16_t wheelValue = 0; FRESULT WriteFile(char* fileName, char* text, WORD size); void TimerB_Init(void); void DataAcq() { char data[3]= {'0','0','\0'}; uint8_t data1 = 0; uint16_t intialWheelValue = 0; uint16_t wheelValue = 0; TimerB_Init(); Dogs102x6_init(); Dogs102x6_clearScreen(); Buttons_interruptEnable(BUTTON_ALL); //按键中断使能 buttonsPressed = 0; intialWheelValue = Wheel_getValue(); // 得到初始齿轮电位计采样值 __enable_interrupt(); //使能全局中断 while(!(buttonsPressed & BUTTON_S2)){ Dogs102x6_stringDraw(3, 45, &data[0], DOGS102x6_DRAW_INVERT); //显示数 wheelValue = Wheel_getValue(); data1 = wheelValue/68; //得到当前齿轮电位计采样值 if (intialWheelValue != wheelValue){ //若当前齿轮电位计采样值与初始齿轮电位计采样值不同,进行小时重置 if (data1 < 10){ data[0] = '0'; data[1] = '0' + data1; } else if (data1 < 20){ data[0] = '1'; data[1] = '0' + (data1 - 10); } else if (data1 < 30){ data[0] = '2'; data[1] = '0' + (data1 - 20); } else if (data1 < 40){ data[0] = '3'; data[1] = '0' + (data1 - 30); } else if (data1 < 50){ data[0] = '4'; data[1] = '0' + (data1 - 40); } else if (data1 < 60){ data[0] = '5'; data[1] = '0' + (data1 - 50); } else { data[0] = '6'; data[1] = '0'; } } } } FRESULT WriteFile(char* fileName, char* text, WORD size) { // Result code FRESULT rc; // File system object FATFS fatfs; // File object FIL fil; UINT bw; // Register volume work area (never fails) f_mount(0, &fatfs); // Open file rc = f_open(&fil, fileName, FA_READ | FA_WRITE | FA_OPEN_ALWAYS); if (rc) { die(rc); } //指针指到文本最后 rc = f_lseek(&fil, f_size(&fil)); if(rc) { die(rc); } // Write to file rc = f_write(&fil, text, size, &bw); if (rc) { die(rc); } // Close the file rc = f_close(&fil); if (rc) { die(rc); } return rc; } /*定时器初始化*/ void TimerB_Init(void) { TB0CCR0 = 32768; TB0CTL = TBSSEL_0+TBCLR+MC_1; // TB0CCTL0 = CCIE; } #pragma vector = TIMERB0_VECTOR __interrupt void Timer_B0(void) { cont = cont+1; if(cont == 1) { cont = 0; flag = 1; buffer[0] = '['; buffer[1] = data[0]; buffer[2] = data[1]; buffer[3] = ']'; WriteFile("1.txt",buffer,4); //写入数据 } }

    MSP430F5529 定时器中断 TE rc se

    805浏览量 1回复量 关注量
  • MSP430F169的ADC12采样率问题

    求高手点拨。 想要使用单通道连续采样,工作在最高采样率。但是用TI的例程实测,采样率都低太多。 时钟用ADC内部振荡器,约5MHz,2个采样周期+13个转换周期,计算下来应该4us左右采一个点。 但是,输入5kHz的正方波——100us高电平, 采下来高电平就采到2、3个值,低电平采到1、2个值,感觉30多us才采了一个点。 IAR编译,自己画的开发板,代码如下: #include #include "..\com\delay.h" #define Num_of_Results 30 static unsigned int results[Num_of_Results]; // Needs to be global in this // example. Otherwise, the // compiler removes it because it // is not used for anything. static unsigned int index = 0; unsigned char ir; void main(void) { WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer /* for test */ P1DIR |= BIT0; // 上电指示 P1OUT |= BIT0; P2DIR |= BIT6; // ADC12CLK P2SEL |= BIT6; // Vref+ 在pin7测试 P5DIR |= 0x70; // P5.6,5,4 outputs P5SEL |= 0x70; // P5.6,5,4 options, ACLK, SMCLK, MCLK /**/ P6SEL |= 0x01; // Enable A/D channel A0 ADC12CTL0 = ADC12ON + SHT0_2 + REFON + MSC; // Turn on ADC12, set sampling time ADC12CTL1 = SHP + CONSEQ_2; // Use sampling timer, single-repeat mode, default: ADC12CLK = ADC12OSC(about 5MHz) ADC12MCTL0 = SREF_1; // Vr+=Vref+ ADC12IE = 0x01; // Enable ADC12IFG.0 delay_ms(20); ADC12CTL0 |= ENC; // Enable conversions ADC12CTL0 |= ADC12SC; // Start conversion _BIS_SR(LPM0_bits + GIE); // Enter LPM0,Enable interrupts } #pragma vector=ADC12_VECTOR __interrupt void ADC12ISR (void) { results[index] = ADC12MEM0; // Move results index = (index+1)%Num_of_Results; // Increment results index, modulo }

    MSP430F169 ADC1 se TI results

    800浏览量 3回复量 关注量
  • 我的捕获程序只能进一次中断怎么办求大神 sos

    void setclock(void) { WDTCTL = WDTPW + WDTHOLD; // watchdog timer setup if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) { while(1); // If cal constants erased, trap CPU!! } BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation IFG1 &= ~OFIFG; } void settimer(){ TACTL=TACLR; TACTL=TASSEL_2+MC_2; TACCTL1=CM_3+CCIS_0+CAP+CCIE; TACCTL1&=~CCIFG; _EINT(); } void setgpio(){ P1DIR=0X01; P1OUT=0X01; P1SEL=BIT2+BIT1; } void main(void) { setclock(); setgpio(); settimer(); while(1); } #pragma vector=TIMER0_A1_VECTOR __interrupt void Timer_A (void) { if(TACCTL1&CCIFG){ TACCTL1&=CCIFG; //CC=CCR1-C; //C=CCR1; P1OUT^=BIT0; } }

    se AC TI timer hz

    789浏览量 0回复量 关注量
  • M3做UDP接收数据问题 sos

    项目要求多个设备进行网络通信,之前没接触过网络通信,用M3 UIP协议写了UDP通信,接收正常,当开机大概十分钟或网络报文过多就会出现不能正常接收数据,因为设备较多,网络内每秒大概有20~30个报文,报文大概20字节左右!我是直接通过uip_appdata指针获取数据!是不是用后需要清除缓存,发送没问题就接收数据不对! RecDat = (struct DatRec *)uip_appdata; if(.............) {........}发送正确的条件,一开始能正常进入if语句,时间长了就进不去了,看了,数据发的没错! uip_send(&SendDat, sizeof(SendDat)); 应用层接收发送大概就用这两函数!求大神解救啊啊啊!找不到原因啊!

    udp 网络 ip ui se

    742浏览量 0回复量 关注量
  • stm32f0系列进入睡眠模式的困惑

    [color=#222226]使用STM32F030F4P6做产品,[/color][color=#222226]现在是可以进入待机模式,使用RTC唤醒,然后能发送数据工作。[/color] [color=#222226]现在想让产品初始上电后先进入休眠,然后在RTC唤醒后,再发送数据;但是现在只要上电就直接发送数据,然后才进入休眠。[/color] [color=#222226]通过查看PWR->CSR寄存器,看到RM手册中说SBF和WUF位是可以用来判断是否从待机模式中醒来的,但是程序这么做了不起作用,还是上电就发送数据。[/color] [color=#222226]请各位大佬给看看可能因为什么导致的。[/color] [color=#222226]int main(void)[/color] [color=#222226]{[/color] [color=#222226] /* MCU Configuration--------------------------------------------------------*/[/color] [color=#222226] HAL_Init();[/color] [color=#222226] /* Configure the system clock */[/color] [color=#222226] SystemClock_Config();[/color] [color=#222226] [/color] [color=#222226] MX_GPIO_Init(); [/color] [color=#222226] MX_RTC_Init();[/color] [color=#222226] [/color] [color=#222226] RTC_AlarmConfig();[/color] [color=#222226] /* USER CODE BEGIN SysInit */[/color] [color=#222226] if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET ) //在此判断SBF标志位,若为1,则表明是被唤醒过[/color] [color=#222226] //if(__HAL_PWR_GET_FLAG(PWR_FLAG_WU)!= RESET)[/color] [color=#222226]{[/color] [color=#222226] __HAL_RCC_GPIOA_CLK_ENABLE();[/color] [color=#222226] MX_SPI1_Init();[/color] [color=#222226] Lora_init();[/color] [color=#222226] //HAL_Delay(10000);[/color] [color=#222226] Read_Ds18b20();[/color] [color=#222226] Lora_SendTemp1();[/color] [color=#222226] }[/color] [color=#222226] __HAL_RCC_PWR_CLK_ENABLE();[/color] [color=#222226] if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)[/color] [color=#222226]{[/color] [color=#222226] __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);[/color] [color=#222226] }[/color] [color=#222226] [/color] [color=#222226] HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);[/color] [color=#222226]if (__HAL_PWR_GET_FLAG(PWR_FLAG_WU) != RESET)[/color][img=0,24]https://img-bbs.csdn.net/upload/202005/26/1590486098_526184.png[/img] [color=#222226] HAL_PWR_EnterSTANDBYMode();[/color] [color=#222226] while (1)[/color] [color=#222226] {[/color] [color=#222226] [/color] [color=#222226] }[/color] [color=#222226]}[/color] [color=#222226]通过查看数据手册,说有2个标志位,一个是用来说明曾进入待机模式;另一个是曾被唤醒过,通过判断这个,认为设备进入过待机模式,那么就可以发送数据;若没进入过,那就先进入待机,不发数据。[/color] [color=#222226]这2个我都尝试了,没起作用,请大家指点。[/color]

    STM32F0 se ni pi ge

    1309浏览量 6回复量 关注量
  • 麻烦问一下AD7608可以输出负电压吗?

    [i=s] 本帖最后由 二木不是猫 于 2020-9-29 10:01 编辑 [/i] 看了几遍datasheet还是不太确定想要问一下ad7608可以输入输出负电压吗? 谢谢~ RAR/SER SEL--高电平 RANGE --高电平 REF_SEL--高电平 OS0--低电平 OS1--高电平 OS2--高电平 采样率选取的是:无过采样 时序图是按照这个区配的

    AD 电压 电平 os se

    2249浏览量 25回复量 关注量
  • 谁能给解释下MS51FB9AE官方给提供的修改24M主频的函数?

    [i=s] 本帖最后由 taobaofarmer 于 2020-9-12 15:35 编辑 [/i] 官方给提供的例程,在Sample_Code->RegBased->Fsys_MoidfyHIRC->FSYS_MHIRC.C->MODIFY_HIRC(HIRC_24);函数里,该函数我给整理了下,只保留调整主频位24M的功能,代码如下: void Make_HIRC_24MHz(void) { u8 idata hirc_map0, hirc_map1; //Check if power on reset, modify HIRC SFRS = 0; //?1处 IAPAL = 0x38; set_IAPEN; { IAPAH = 0x00; IAPCN = READ_UID; //?2处 set_IAPGO; hirc_map0 = IAPFD; IAPAL++; set_IAPGO; hirc_map1 = IAPFD; } clr_IAPEN; TA = 0xAA; TA = 0x55; { RCTRIM0 = hirc_map0; } TA = 0xAA; TA = 0x55; { RCTRIM1 = hirc_map1; } //禁止低功耗模式 PCON &= CLR_BIT4; } 首先说明这个函数在MS51FB9AE上执行是失败的,大体过程我知道,是从系统默认的配置里读出24M主频的高低字节配置信息,然后写入RCTRIM0和RCTRIM1里,但是在?2处,为何IAPCN的指令是READ_UID呢?这个指令不是读芯片内部96位unique id吗? 另外?1处 SFRS = 0;啥意思,难道是翻到SFR页0的意思吗?如果这是这样的话,SFRS寄存器是有TA保护的,单单SFRS = 0;是不行的呀?

    s51 函数 rc iap se

    2345浏览量 22回复量 关注量
  • 华大芯片中断事件请求序号

    [i=s] 本帖最后由 阳仔很无奈 于 2020-9-8 13:31 编辑 [/i] [img]C:\Users\XuYan\Desktop[/img] 针对定时器A,我想使用他的周期匹配中断,但是他的周期匹配中断的序列号16和17已经被我给了另外两个中断用了,现在我再例程中,将原先的序列号16更换为28,却发现无法正常工作了,这时为什么?

    芯片 RS se top des

    1568浏览量 4回复量 关注量
  • 电机小圆版的驱动芯片怎么没资料?

    [b]ELMOS E523.01 系列 马达/运动/点火控制器和驱动器[/b]手册都搜不到。

    电机 驱动芯片 MOS os se

    1022浏览量 5回复量 关注量
  • 运放的输出端有一个下拉到地的电阻有什么用?

    [i=s] 本帖最后由 像风儿一样清 于 2020-8-29 21:23 编辑 [/i] 我看见很多运放的电路图上,其输出端都有一个下拉到地的电阻,请问这个电阻是起什么作用的?[img]C:\Users\huist\Desktop\自己的东西[/img]就是下图中的R3.

    运放 电阻 se ST top

    1857浏览量 2回复量 关注量