大家好!我最近在做STM32L476的IAP 功能,目前已经实现从Bootloader到APP的跳转。但是出现的问题是,在Bootloader中使用到了串口1,跳转到APP的时候串口1无法输出,但是外部中断、定时器中断和GPIOB都正常工作。我查了huart1.gState 状态为HAL_UART_ERROR_NONE,告诉我么有错误。 我想请教下哪位大神遇到过类似问题?问题卡在了if(huart->gState == HAL_UART_STATE_READY) |
问个关于STM32L4 SPI读数据,前3个字节永远是0
STM32L432 2个SPI同时使用的问题
STM32L476 ADC采集内部温度传感器电压值
STM32L431通过串口下载程序问题
ST的hal库有问题手头有STM32L4或STM32F7的帮忙测试DMA SD卡
STM32L476-Discovery开发板如何进行串口固件烧写
大家有用到STM32L433的CAN通信的吗?
STM32L4 FFT 自带arm_math.h编译不成功
想问一个关于STM32L475 flash的问题
谁有STM32L476的编程手册,传一个,感谢
重新初始化串口试一下。看样子像是串口没有初始化。 HAL_UART_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use Value is allowed for gState and RxState */
评分
查看全部评分
加上偏移地址重新编译后的程序,才能下载到APP存储区。
中断向量重定向,所有外设重新初始化。
评分
查看全部评分
评分
查看全部评分
回复:安: 我的串口已经进行过了初始化,APP中的代码如下:
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_USART1_UART_Init();
MX_UART4_Init();
、、-------------------------------------------
void MX_USART1_UART_Init(void)
{
HAL_UART_MspDeInit(&huart1);
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
// huart1.Init.OverSampling = UART_OVERSAMPLING_16;
// huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
// huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
HAL_UART_MspInit(&huart1);
另外我的偏移地址加上了并且重新编译过了
中断向量也已经重新定向:SCB->VTOR = (uint32_t)(0x08080000);
外设初始化与独立运行时相同。
APP跳转之后,所有外设与中断都重新进行了初始化。
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_USART1_UART_Init();
MX_UART4_Init();
MX_I2C1_Init();
MX_SPI1_Init();
MX_TIM2_Init();
// /* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim2);
UartGsmReceieveInit();
谢谢你的提醒,我在代码里面直接重复了一句,初始化的就能用了,不清楚原理,但是目前就先这样用,mark一下,以后有时间回来好好研究依一下。
MX_USART1_UART_Init();
MX_UART4_Init();
printf("This is APP\r\n");
感谢各位的回复!等我整理好我最近的IAP的资料,我打算开个帖子分享给论坛的各位。下面是我代码的输出,循环在APP与Bootloader之间跳转,能够启动外设串口1、4、Systic、Timer2、LED、IIC等,应该可以说明运行正常了。
AUTO Jump to APP
This is APP
DS3231 Time is 2018/02/11 1W 15:16:32
Soft reset in 3 secs
3 2 1
This is Bootloader
DS3231 Time is 2018/02/11 1W 15:16:35
GSM is Alive
+CSQ = 23
AUTO Jump to APP
This is APP
DS3231 Time is 2018/02/11 1W 15:16:52
Soft reset in 3 secs
3 2 1
This is Bootloader
DS3231 Time is 2018/02/11 1W 15:16:55
GSM is Alive
评分
查看全部评分
我也遇到类似的问题,在初始化前加了中断延时好的,可是不知道原因,你有知道什么原因吗
请问你们是怎么解决的??跪求