-
MM32F103发生硬件中断。 sos
描述:读48000004的地址内容入变量(寄存器R4),发生硬件中断 原句: if (GPIO_InitStruct->GPIO_Pin > 0x00FF) { !!!!!!!!!!!!这个语句有问题!!!!!!!!!! tmpreg =GPIOx->CRH; !!!!!!!!!!!!!!!!!!!!!!!!!!!! for (pinpos = 0x00; pinpos < 0x08; pinpos++) { pos = (((uint32_t)0x01) << (pinpos + 0x08)) 汇编下: 0x080006F8 6854 LDR r4,[r2,#0x04] 其中R4 :00000000 R2 :48000000 解析:40000000 为外设地址 ,偏移08000000 应该是GPIOA的地址,后面04则为这个地址的CRH位,但是就是读不出,工程文件均为官方例程。
3411浏览量 0回复量 关注量 -
HC32F003C4Pa
用官网例程UART1 改UART0 只能发生不能接受。不知到什么情况。long: //串口引脚配置 static void App_PortInit(void) { stc_gpio_cfg_t stcGpioCfg; DDL_ZERO_STRUCT(stcGpioCfg); Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //使能GPIO模块时钟 ///
1089浏览量 1回复量 关注量 -
GD32E230的ADC可靠不? sos
我想用 TIMER14 CH0 触发 ADC(扫描转换模式),就怎么触发不了。高手帮我看看哪错了 #include "gd32e23x_adc.h" #include "gd32e23x_dma.h" #include "gd32e23x_gpio.h" #include "gd32e23x_timer.h" static volatile uint16_t data[4]; static void rcuConfig(); static void adcConfig(); static void dmaConfig(); static void portConfig(); static void timerConfig(); void main() { rcuConfig(); timerConfig(); portConfig(); dmaConfig(); adcConfig(); timer_enable(TIMER14); gpio_bit_set(GPIOB, GPIO_PIN_4); while (1) ; } void rcuConfig() { rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_ADC); rcu_periph_clock_enable(RCU_DMA); rcu_periph_clock_enable(RCU_TIMER14); rcu_adc_clock_config(RCU_ADCCK_AHB_DIV3); } void adcConfig() { adc_special_function_config(ADC_SCAN_MODE, ENABLE); adc_dma_mode_enable(); adc_channel_length_config(ADC_REGULAR_CHANNEL, 4U); adc_regular_channel_config(1U, ADC_CHANNEL_3, ADC_SAMPLETIME_1POINT5); adc_regular_channel_config(2U, ADC_CHANNEL_4, ADC_SAMPLETIME_1POINT5); adc_regular_channel_config(3U, ADC_CHANNEL_8, ADC_SAMPLETIME_1POINT5); adc_regular_channel_config(4U, ADC_CHANNEL_9, ADC_SAMPLETIME_1POINT5); adc_external_trigger_config(ADC_REGULAR_CHANNEL, ENABLE); adc_external_trigger_source_config(ADC_REGULAR_CHANNEL, ADC_EXTTRIG_REGULAR_T14_CH0); adc_enable(); for (uint16_t i = 0; i < 1000; ++i) ; adc_calibration_enable(); } void dmaConfig() { dma_parameter_struct initParam; initParam.periph_addr = 0x4001244CU; // ADC_RDATA initParam.periph_inc = DMA_PERIPH_INCREASE_DISABLE; initParam.memory_addr = (uint32_t)data; initParam.memory_inc = DMA_MEMORY_INCREASE_ENABLE; initParam.periph_width = DMA_PERIPHERAL_WIDTH_16BIT; initParam.memory_width = DMA_MEMORY_WIDTH_16BIT; initParam.direction = DMA_PERIPHERAL_TO_MEMORY; initParam.number = 4U; initParam.priority = DMA_PRIORITY_HIGH; dma_init(DMA_CH0, &initParam); dma_circulation_enable(DMA_CH0); dma_interrupt_enable(DMA_CH0, DMA_INT_FTF); dma_interrupt_flag_clear(DMA_CH0, DMA_INT_FLAG_FTF); nvic_irq_enable(DMA_Channel0_IRQn, 1); dma_channel_enable(DMA_CH0); } void portConfig() { gpio_mode_set(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_3); gpio_mode_set(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_4); gpio_mode_set(GPIOB, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_0); gpio_mode_set(GPIOB, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_1); gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_4); // LED } void timerConfig() { timer_parameter_struct initParam; initParam.prescaler = 71; initParam.alignedmode = TIMER_COUNTER_EDGE; initParam.counterdirection = TIMER_COUNTER_UP; initParam.period = 99; initParam.clockdivision = TIMER_CKDIV_DIV1; initParam.repetitioncounter = 0U; timer_init(TIMER14, &initParam); timer_oc_parameter_struct ocParam; ocParam.outputstate = TIMER_CCX_ENABLE; ocParam.ocpolarity = TIMER_OC_POLARITY_HIGH; timer_channel_output_config(TIMER14, TIMER_CH_0, &ocParam); timer_channel_output_pulse_value_config(TIMER14, TIMER_CH_0, 2U); timer_channel_output_mode_config(TIMER14, TIMER_CH_0, TIMER_OC_MODE_PWM1); } void DMA_Channel0_IRQHandler() { static uint32_t i = 0; if (dma_interrupt_flag_get(DMA_CH0, DMA_INT_FLAG_FTF)) { dma_interrupt_flag_clear(DMA_CH0, DMA_INT_FLAG_FTF); ++i; if (i == 10000) { i = 0; gpio_bit_toggle(GPIOB, GPIO_PIN_4); } } }
2199浏览量 0回复量 关注量 -
STM32F207 PB3引脚复用问题
[i=s] 本帖最后由 sfd123 于 2020-12-23 09:11 编辑 [/i] [backcolor=LemonChiffon][/backcolor] [tr][td]问题描述: 使用PB3、PB4、PB5、PA15组成一组SPI,可是只要配置PB3,程序一运行就会卡在 Default_Handler PROC 。。。 B .-------------卡在这里 ENDP ALIGN 看了网上的说法是 缺少中断处理函数,可是我配置SPI时,没有开启任何中断啊 另外,我不使用PB3,改为使用PA5,SPI正常 所以我想应该是和PB3作为JTDO/TRACESWO有关,但是翻遍了STM32F207的datasheet没有找到类似STM32F10x那样的配置寄存器AFIO_MAPR 万能的网友,这个应该怎么处理?非常感谢![/td][/tr]
4093浏览量 7回复量 关注量 -
stm8s003 的 I/O口自动变成低电平
使用stm8s003的PD2,PD3,PC7当成普通的按键输入检测端口,端口设置为内部上拉,并且在每个端口直接接了一个104p电容到地。现在线路板做通电48小时老化测试,有2%的线路板有误动作,不是上电的时间产出误动作,没有规律,有时候几个小时,有时候几十个小时才会出现。检查都是输入端口变为了低电平(只有按下按键,端口才会是低电平)怀疑104漏电,拆下单独测试电容是好的,焊回到线路板又好了,电容会时好时坏吗? GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);//PC7上拉输入 GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_IN_PU_NO_IT);//PD0-PD3上拉输入
1827浏览量 8回复量 关注量 -
【求助】I2S接口示例
请问 - GD32 ARM Cortex-M4 Microcontroller ,这款MCU ,与SPI复用的接口包括I2S,引脚为I2S_CKINI/MCK/CK/WS/ADD_SD/SD,请问有详细资料(参考原理,demo例程)嘛,资料好少哦
1208浏览量 1回复量 关注量 -
关于GD32F450串口irDA收发以及串口配置问题
最近在做一个关于串口irDA的红外通信模块,GD32F450做串口初始化的时候 我使能了串口收发以及红外功能,但是数据能发不能接收是怎么一回事呢?不知道有没有大佬用过GD 的irDA??串口初始化代码如下: void gd_eval_com_init(uint32_t com) { /* enable GPIO clock */ uint32_t COM_ID; if(EVAL_COM1 == com) { COM_ID = 0U; } rcu_periph_clock_enable( EVAL_COM_GPIO_CLK); /* enable USART clock */ rcu_periph_clock_enable(COM_CLK[COM_ID]); /* connect port to USARTx_Tx */ gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_TX_PIN[COM_ID]); /* connect port to USARTx_Rx */ gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_RX_PIN[COM_ID]); /* configure USART Tx as alternate function push-pull */ gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,COM_TX_PIN[COM_ID]); gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,COM_TX_PIN[COM_ID]); /* configure USART Rx as alternate function push-pull */ gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,COM_RX_PIN[COM_ID]); gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,COM_RX_PIN[COM_ID]); /* USART configure */ usart_deinit(com); usart_baudrate_set(com,115200U); usart_stop_bit_set(com, USART_STB_1BIT); usart_receive_config(com, USART_RECEIVE_ENABLE); usart_transmit_config(com, USART_TRANSMIT_ENABLE); // usart_irda_lowpower_config(com, USART_IRLP_NORMAL); usart_irda_mode_enable(com); usart_enable(com); /* USART interrupt configuration */ nvic_irq_enable(UART3_IRQn, 1, 1); /* enable USART0 receive interrupt */ usart_interrupt_enable(UART3, USART_INTEN_RBNEIE); // /* enable USART0 transmit interrupt */ // usart_interrupt_enable(USART0, USART_INTEN_TBEIE); }
1199浏览量 1回复量 关注量 -
【GD32的BUG】GD32F405 使用 USB HS 无法接收大于512字节的数据
[i=s] 本帖最后由 lewlew 于 2020-11-17 09:50 编辑 [/i] 单片机烧录的是 GD32F4xx_Firmware_Library_V2.1.1 固件库自带的CDC例程, 路径是: Examples\USB\USB_Device\cdc_acm 代码只修改了 GPIO 初始化部分, 以匹配我使用的 GD32F405RGT6 的 ULPI 引脚. 烧录后插上电脑, 串口助手能正常通信, 发送小于等于 512 字节的数据完全没问题, 但是超过 512 字节的数据就会丢失. 请问这是什么情况?
4304浏览量 19回复量 关注量 -
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]
1408浏览量 6回复量 关注量 -
大家有没有遇到ST的芯片大幅涨价,有没有好的国产替代
我们目前用的ST的stm32f031系列芯片价格贵的离谱,从3块涨到了9块。国产GD已经被我过度过来,但是航顺单片机据说PIN TO PIN,但是我选择了对应型号,烧录后感觉单片机很呆,代码能跑,但是跑不动,debug发现经常跑着跑着就倒了,感觉跑个程序磕磕绊绊。据说航顺公司很小,搞的现在不敢下手去研究。搜索 [align=left]复制[/align]
1587浏览量 2回复量 关注量 -
有没有使用GD32单片机的,使用DMA遇到问题
问题是这样的:我使用GD32E23芯片,M0+内核,用GD的库函数,在使用USART和SPI的DMA方式传输数据时,每次数据传输完成都必须初始化DMA,否则无法完成下一次传输。但是初始化是很耗费时间的,就不能想ST那样直接清标志位实现下一次传输吗?搜索 [align=left]复制[/align]
2594浏览量 4回复量 关注量 -
stm32 调试 ads7843时读取结果为oxfff
这两天在调试tft屏上带的触控功能ic---ADS7843,但是无论用STM32F107的GPIO模拟spi或是SPI3,读出来的数据都是oxfff
1104浏览量 9回复量 关注量 -
Nutool Pinconfigure不能打开文件 sos
使用pincongfig配置好后,能正常保存,但就是无法打开,每次打开自己保存的cfg文件时,都弹出“来自网页的信息 the config file is incorrect.”。论坛有哪位大侠知道是啥原因不?以前可以用,后来不知咋的,一直这问题用不了,很是郁闷,新唐官方说是系统问题,但说不出是系统哪个问题引起。
764浏览量 0回复量 关注量 -
汽车电子——OBD的底盘地和逻辑地有区别吗?
OBD端子上的PIN4为底盘地,PIN5为逻辑地,这两个地有区别吗? 在接线的时候,如果既要从OBD上取电,又要从OBD上出其他信号,这个地该怎么接呢? 有哪位大神帮忙解答一下,谢谢~
1517浏览量 3回复量 关注量 -
公司一台美国的测试设备坏了,主控板的一个光耦型号从...
公司一台美国的测试设备坏了,拆开维修主控板,发现信号在一个光耦处出现异常,想购买一个回来更换,丝印"SHO 364", 4PIN, 网上一直搜索不到型号,求见多识广的高手指出
1090浏览量 2回复量 关注量